奇怪的是`isKindOfClass`行为

时间:2011-01-20 11:00:20

标签: iphone objective-c cocoa-touch ipad ios

参考下面的代码,我发现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]不!

以前有人遇到过这个吗?

2 个答案:

答案 0 :(得分:5)

[parent isKindOfClass:[Document class]]应该返回YES。 [parent class]是一个类对象,很可能不是类Document的实例。

这就是NSLog()打印类名(来自文档)的原因:

  

+ (NSString *) description

     

NSObject的实现   方法只是打印的名称   类。

答案 1 :(得分:3)

你应该写:[parent isKindOfClass:[Document class]]

[parent class]将返回一个Class对象,而Class对象不是一种Document。