isKindOfClass не работает должным образом
я работаю над проектом iOS5 + (xcode 4.4.1 SDK 5.1)
у меня есть этот код внутри модульного теста:
[_appDelegate application:nil didFinishLaunchingWithOptions:nil];
UITabBarController *tabBarController = (UITabBarController*)_appDelegate.window.rootViewController;
NSArray *viewControllers = [tabBarController viewControllers];
UINavigationController *nc_1 = [viewControllers objectAtIndex:0];
UIViewController *vc_1 = nc_1.topViewController;
STAssertTrue([vc_1 isKindOfClass:[ScheduleViewController class]]==YES, @"UITabBarController first tab should be a ScheduleViewController class");
Если я запускаю тест, тест не пройден.
Итак, я проверяю с помощью отладчика:
(lldb) po [ScheduleViewController class]
(id) $1 = 0x00142b04 ScheduleViewController
(lldb) po vc_1
(UIViewController *) $2 = 0x11a32dc0
(lldb) print (BOOL) [vc_1 isKindOfClass:(Class)[ScheduleViewController class]]
(BOOL) $4 = YES
(lldb) po [vc_1 class]
(id) $5 = 0x00142b04 ScheduleViewController
(lldb)
В приложении: didFinishLaunchingWithOptions: я создаю ScheduleViewController и использую его как rootController контроллера навигации. Отладчик скажет этоправильно. Я нене понимаю, что не так с утверждением выше.
У кого-нибудь есть идеи по этому поводу?
Обновить
Первая реализация утверждения была:
STAssertTrue([vc_1 isKindOfClass:[ScheduleViewController class]], @"UITabBarController first tab should be a ScheduleViewController class");
Утверждение не удалось таким же образом.
Обновление 2
Как предлагается в комментарии, я пытаюсь добавить этот кусок кода перед утверждением:
BOOL vcBool = [vc_1 isKindOfClass:[ScheduleViewController class]];
С помощью отладчика я вижу:
(lldb) print (BOOL) [vc_1 isKindOfClass:(Class)[ScheduleViewController class]]
(BOOL) $1 = YES
(lldb) print (BOOL) vcBool
(BOOL) $2 = NO
(lldb)
Обновление 3
Я добавил эту строку, как предложено в комментариях, перед утверждением:
NSLog(@"vc_1=%@ class=%@", vc_1, NSStringFromClass([vc_1 class]));
Из консоли отладки:
vc_1= class=ScheduleViewController