奇怪的`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中的实现这个 方法简单地打印 类的名称。

+0

如果它不是文档的实例,那么为什么日志会显示'Document'='Document' – 2011-01-20 11:06:46

你应该写:[父isKindOfClass:[文档类]

[父类]会返回一个Class对象和Class对象不是一种文档。