奇怪的`isKindOfClass`行为
问题描述:
参考下面的代码,我发现isKindOfClass
未能识别一个类。奇怪的`isKindOfClass`行为
id parent = [self.tableDataSource objectAtIndex:indexPath.row];
//parent Can be either 'document' or 'folder'
NSLog(@"'%@'='%@' ?",[parent class],[Document class]);
BOOL classCheck = [[parent class] isKindOfClass:[Document class]];
NSLog (@"%@", classCheck? @"Yes!" : @"No!");
控制台日志:
2011-01-20 10:44:29.746的ApplicationName [906:307] '文档'= '文献'?
2011-01-20 10:44:29.756 ApplicationName [906:307]不!
有没有人遇到过这个?
答
[parent isKindOfClass:[Document class]]
应该返回YES。 [parent class]
是最有可能不是类Document的实例的类对象。
这是为什么NSLog()
打印类名(从文档):
+ (NSString *) description
NSObject中的实现这个 方法简单地打印 类的名称。
答
你应该写:[父isKindOfClass:[文档类]
[父类]会返回一个Class对象和Class对象不是一种文档。
如果它不是文档的实例,那么为什么日志会显示'Document'='Document' – 2011-01-20 11:06:46