2011-01-20 48 views
2

參考下面的代碼,我發現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]不!

有沒有人遇到過這個?

回答

5

[parent isKindOfClass:[Document class]]應該返回YES。 [parent class]是最有可能不是類Document的實例的類對象。

這是爲什麼NSLog()打印類名(從文檔):

+ (NSString *) description

NSObject中的實現這個 方法簡單地打印 類的名稱。

+0

如果它不是文檔的實例,那麼爲什麼日誌會顯示'Document'='Document' – 2011-01-20 11:06:46

3

你應該寫:[父isKindOfClass:[文檔類]

[父類]會返回一個Class對象和Class對象不是一種文檔。