Странное поведение `isKindOfClass` - PullRequest
2 голосов
/ 20 января 2011

Со ссылкой на приведенный ниже код я обнаружил, что 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] 'Document' = 'Document'?
2011-01-20 10: 44: 29.756 ApplicationName [906: 307] Нет!

Кто-нибудь сталкивался с этим раньше?

Ответы [ 2 ]

5 голосов
/ 20 января 2011

[parent isKindOfClass:[Document class]] должен вернуть ДА. [parent class] - это объект класса, который, скорее всего, не является экземпляром класса Document.

Вот почему NSLog() печатает имена классов (из документов):

+ (NSString *) description

Реализация этого в NSObject Метод просто печатает имя класс.

3 голосов
/ 20 января 2011

Вы должны написать: [parent isKindOfClass: [Класс документа]]

[родительский класс] вернет объект Class, а объект Class не является разновидностью Document.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...