Итак, у меня есть экземпляр MyViewController в подробном представлении UISplitViewController.Я запускаю модульное тестирование, чтобы проверить, содержит ли подробный вид правильный тип представления.
Я проверяю тип контроллера в модульном тесте с помощью следующего:
[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)