但兩個有很大區別:
isKindOfClass來確定壹個對象是否是壹個類的成員,或者是派生自該類的成員。
isMemberOfClass只能確定壹個對象是否是當前類的成員。
例如:已經成NSObject派生了自己的類,isMemberOfClass不能檢測任何的類都是基於NSObject類這壹事實,而isKindOfClass可以。
[[NSMutableData data] isKindOfClass:[NSData class]]; // YES
[[NSMutableData data] isMemberOfClass:[NSData class]]; // NO
例:
- (void) testIsKindOfClass {
Class1 *c1=[Class1 new];
if ([c1 isKindOfClass: [NSObject class]]) {
NSLog(@"c1 is a kind of NSObject.");
}
if ([c1 isMemberOfClass:[Class1 class]]) {
NSLog(@"c1 is Member of Class1 !");
}
if (![c1 isMemberOfClass:[NSObject class]]) {
NSLog(@"c1 is't Member of NSObject !");
}
}
輸出結果;
c1 is a kind of NSObject .
c1 is Member of Class1 !
c1 is't Member of NSObject !