Tengo una instancia de MyViewController en la vista de detalles de UISplitViewController. Estoy ejecutando una prueba unitaria para ver si la vista detallada contiene el tipo correcto de vista.isKindOfClass: devuelve falso negativo en el paquete de prueba de unidades
I probar el tipo de controlador en la unidad de prueba con lo siguiente:
[controller isKindOfClass:[MyViewController class]];
Sin embargo, el método isKindOfClass siempre devuelve NO
Cuando po el objeto en el depurador consigo el siguiente:
(gdb) po controller
<MyViewController: 0xb31c4d0>
También he probado el método isMemberOfClass: produce los mismos resultados. ¿Alguien puede explicar por qué esto sucederá?
EDIT: Así que después de leer el artículo publicado por Nick Weaver me di cuenta de que estaba incluyendo los archivos fuente de mi aplicación en la fase de compilación de las fuentes de compilación del paquete de prueba. Esto también se indica en el registro haciendo declaraciones similares al siguiente:
Class MyViewController is implemented in both /Users/jdoe/Library/Application Support/iPhone Simulator/4.3.2/Applications/670A077A-BAD8-4FA6-945A-851F33114CF5/MyApp.app/MyApp and /Users/jdoe/Library/Developer/Xcode/DerivedData/MyApp-drxyfejeattjwgantzesgensnlnx/Build/Products/Debug-iphonesimulator/MyAppTests.octest/MyAppTests. One of the two will be used. Which one is undefined.
Sin embargo, cuando quito los archivos de origen a partir de fuentes de compilación del lote de prueba fase de construcción, me gustaría tener un error de vinculador que se parece a lo siguiente:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MyViewController", referenced from:
objc-class-ref in _MyViewControllerTests.o
(maybe you meant: _OBJC_CLASS_$__MyViewControllerTests)
¿Esto se comporta de la misma manera durante el tiempo de ejecución no en la prueba? –
Por lo que puedo ver, no lo hace – nduplessis