2011-01-20 12 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 클래스의 인스턴스가 아닌 클래스 객체입니다. 이 방법의

+ (NSString *) description

NSObject의 구현 단순히 클래스의 이름을 인쇄합니다 (워드 프로세서) NSLog() 인쇄 클래스 이름이 왜 여기에

이다.

+0

문서의 인스턴스가 아닌 경우 로그가 '문서'= '문서'로 표시되는 이유 –

+0

OS와 관련이없는만큼 인기있는 즐겨 찾기 태그이므로 iphone ipad 및 ios를 추가하면 더 많은 조회수가 발생합니다 –

+0

NSLog에서 % @는 객체의 (무엇이든간에)'description' 메소드를 호출하기 때문에,이 경우에는 클래스 이름을 문자열로 반환합니다. 우연의 일치라고 생각하십시오. – Costique

3

당신은 서면으로해야한다 : [부모 isKindOfClass : [문서 클래스]

[부모 클래스] 클래스 객체와 클래스 객체가 문서의 일종되지 않습니다 돌아갑니다.