isKindOfClass não funciona como esperado
Eu estou trabalhando em um projeto iOS5 + (xcode 4.4.1 SDK 5.1)
Eu tenho esse código dentro de um teste de unidade:
[_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");
Se eu executar o teste, o teste falhará.
Então eu checo com o depurador:
(lldb) po [ScheduleViewController class]
(id) $1 = 0x00142b04 ScheduleViewController
(lldb) po vc_1
(UIViewController *) $2 = 0x11a32dc0 <ScheduleViewController: 0x11a32dc0>
(lldb) print (BOOL) [vc_1 isKindOfClass:(Class)[ScheduleViewController class]]
(BOOL) $4 = YES
(lldb) po [vc_1 class]
(id) $5 = 0x00142b04 ScheduleViewController
(lldb)
Na aplicação: didFinishLaunchingWithOptions: eu crio um ScheduleViewController e uso-o como rootController do controlador de navegação. O depurador diz que está correto. Eu não entendo o que está errado com a afirmação acima.
Alguém tem ideia sobre isso?
Atualizar
A primeira implementação da afirmação foi:
STAssertTrue([vc_1 isKindOfClass:[ScheduleViewController class]], @"UITabBarController first tab should be a ScheduleViewController class");
A afirmação falhou da mesma maneira.
Atualização 2
Como sugerido no comentário eu tento adicionar este pedaço de código antes da afirmação:
BOOL vcBool = [vc_1 isKindOfClass:[ScheduleViewController class]];
Com o depurador eu vejo:
(lldb) print (BOOL) [vc_1 isKindOfClass:(Class)[ScheduleViewController class]]
(BOOL) $1 = YES
(lldb) print (BOOL) vcBool
(BOOL) $2 = NO
(lldb)
Atualização 3
Eu adicionei esta linha, como sugerido nos comentários, antes da afirmação:
NSLog(@"vc_1=%@ class=%@", vc_1, NSStringFromClass([vc_1 class]));
No console de depuração:
vc_1=<ScheduleViewController: 0x993bdb0> class=ScheduleViewController