isKindOfClass和isMemberOfClass的区别 比较控制器多区别

来源:互联网 发布:vivo软件商店官网 编辑:程序博客网 时间:2024/05/16 11:04
isKindOfclass和isMemberOfclass 都是NSObject的比较class的方法   
isKindOfclass 比较的范围更大一些
isMemberOfclass   只能比较当前对象是不是来自当前类






但两个有很大区别:  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 !
0 0