Итак, у меня есть экземпляр MyViewController в подробном представлении UISplitViewController. Я запускаю unit test, чтобы увидеть, содержит ли подробный вид правильный тип представления.
Я тестирую тип контроллера в unit test следующим образом:
[controller isKindOfClass:[MyViewController class]];
Однако метод isKindOfClass всегда возвращает NO
Когда я устанавливаю объект в отладчике, я получаю следующее:
(gdb) po controller
<MyViewController: 0xb31c4d0>
Я также попробовал метод isMemberOfClass: он дает те же результаты. Может ли кто-нибудь объяснить, почему это произойдет?
РЕДАКТИРОВАТЬ: Итак, прочитав статью, опубликованную Ником Уивером, я понял, что включаю файлы исходного кода приложения в фазе сборки источников компиляции тестового пакета. Это также было указано в журнале с помощью утверждений, подобных следующему:
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.
Однако, когда я удаляю исходные файлы из фазы сборки источников компиляции тестового пакета, я бы получил ошибку компоновщика, которая выглядит следующим образом:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MyViewController", referenced from:
objc-class-ref in _MyViewControllerTests.o
(maybe you meant: _OBJC_CLASS_$__MyViewControllerTests)