これはNSStringを返すと思うでしょう:
NSString *class = NSStringFromClass([[_array objectAtIndex:([_array count] -2)] class]);
NSLog(@"Is a kind of NSString: %@", ([[_class classForCoder] isSubclassOfClass:[NSString class]])? @"Yes" : @"No");
if ([class isEqualToString:@"MapViewController"]) {
[_appDelegate.navController0 pushViewController:_userListController animated:YES];
} else {
[_appDelegate.navController3 pushViewController:_userListController animated:YES];
}
しかし、何らかの理由でそうではなく、このクラッシュが発生します。
Is a kind of NSString: No
-[NSKeyValueObservationInfo isEqualToString:]: unrecognized selector sent to instance 0x6e69080
私がこれを試しても:
NSString *class = (NSString *)[[_array objectAtIndex:([_array count] -2)] class];
それでもNSStringが返されないため、次のクラッシュが発生します。
Is a kind of NSString: No
+[MapViewController isEqualToString:]: unrecognized selector sent to class 0xd4460
最後の例は少し難しいことはわかっていましたが、どちらからもNSStringが返されない理由についてはかなりわかりません。