isKindOfClass和isMemberOfClass的區別

isKindOfClass和isMemberOfClass的區別

  isKindOfClass和isMemberOfClass 都是NSObject的比較Class的方法
  但兩個有很大區別:
  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 !
相關文章
相關標籤/搜索