isKindOfClass和isMemberOfClass 的比较
2016-01-04 23:20
281 查看
isKindOfClass和isMemberOfClass 都是NSObject的比较Class的方法
但两个有很大区别:
isKindOfClass来确定一个对象是否是一个类的成员,或者是派生自该类的成员
isMemberOfClass只能确定一个对象是否是当前类的成员
例如:我们已经成NSObject派生了自己的类,isMemberOfClass不能检测任何的类都是基于NSObject类这一事实,而isKindOfClass可以。
[html] view
plaincopy
[[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 !
但两个有很大区别:
isKindOfClass来确定一个对象是否是一个类的成员,或者是派生自该类的成员
isMemberOfClass只能确定一个对象是否是当前类的成员
例如:我们已经成NSObject派生了自己的类,isMemberOfClass不能检测任何的类都是基于NSObject类这一事实,而isKindOfClass可以。
[html] view
plaincopy
[[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 !
相关文章推荐
- struct ifreq结构体与ip,子网掩码,网关等信息
- ThinkPhp表单令牌和字段映射
- lvs、haproxy、nginx 负载均衡的比较分析
- 隐世转换 http://www.nowcoder.com/profile/380772/test/2198782/2922?onlyWrong=0
- how to display Error message including Html tag in apex trigger
- 面向对象
- 状态设计模式
- arch安装配置
- android colors.xml的用法
- 2016锻炼身体执行情况记录
- storyboard中Modal 的使用
- 11.5---含有空字符串的字符串查找(CC150)
- iOS UITableView(七) cell删除总结
- iOS三种定时器
- 如何有效的进行测试用例评审
- 列表的常用操作符和BIF
- 工厂三兄弟之抽象工厂模式(二):产品等级结构与产品族
- nginx与Lua执行顺序
- arch-yaourt安装
- andoroid的ListView优化以及如何跳转到第一页