🔥isKindOfClass 和 isMemberOfClass

Posted 1-434

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了🔥isKindOfClass 和 isMemberOfClass相关的知识,希望对你有一定的参考价值。

下面代码结果如何?
// insert code here...
BOOL re1 = [(id)[NSObject class] isKindOfClass:[NSObject class]]; //1
BOOL re2 = [(id)[NSObject class] isMemberOfClass:[NSObject class]];//0
BOOL re3 = [(id)[XZPerson class] isKindOfClass:[XZPerson class]];//0
BOOL re4 = [(id)[XZPerson class] isMemberOfClass:[XZPerson class]];//0
NSLog(@" 
re1 :%hhd
 re2 :%hhd
 re3 :%hhd
 re4 :%hhd
",re1,re2,re3,re4);
 
BOOL re5 = [(id)[NSObject alloc] isKindOfClass:[NSObject class]];//1
BOOL re6 = [(id)[NSObject alloc] isMemberOfClass:[NSObject class]];//1
BOOL re7 = [(id)[XZPerson alloc] isKindOfClass:[XZPerson class]];//1
BOOL re8 = [(id)[XZPerson alloc] isMemberOfClass:[XZPerson class]];//1
NSLog(@" 
re5 :%hhd
 re6 :%hhd
 re7 :%hhd
 re8 :%hhd
",re5,re6,re7,re8);
 
BOOL re9 = [(id)[NSObject class] isKindOfClass:[XZPerson class]];//0
BOOL re10 = [(id)[NSObject class] isMemberOfClass:[XZPerson class]];//0
BOOL re11 = [(id)[NSObject alloc] isKindOfClass:[XZPerson class]];//0
BOOL re12 = [(id)[NSObject alloc] isKindOfClass:[XZPerson class]];//0

技术图片

 

 

首先这个我们需要分析,这个其实主要考察的就是
  1. 类方法 isKindOfClass主要判断什么
解释: 消息接收者的元类对象是否属于传入的class或class的子类
  1. 类方法isMemberOfClass主要判断什么
解释: 消息接收者的元类对象是不是传入的class
  1. 实例方法 isKindOfClass主要判断什么
解释:for循环遍历查找,先看自己的class是不是与传入的class相同,如果不同,查找自己的父类是否与传入的class相同,如果相同,返回YES,如果依然不同,返回NO;
概括
消息接受者或消息接收者的父类是否属于class,换言之,消息接收者是否属于传入的class或class的子类。
  1. 实例方法isMemberOfClass主要判断什么
解释: 消息接收者的class是不是传入的class
 
解析:
1.NSObject的元类属于NSObject的子类(NSObject元类的父类为NSObject)。
2.NSObject的元类不是NSObject类。
3.MJPerson的元类不属于MJPerson类。
4.MJPerson的元类不是MJPerson类。
技术图片

 

 

 

 

以上是关于🔥isKindOfClass 和 isMemberOfClass的主要内容,如果未能解决你的问题,请参考以下文章

isKindOfClass:和isMemberOfClass:-b

🔥🔥iOS中解决NSTimer循环引用问题

isKindOfClass和isMemberOfClass

🔥🔥如何令自己所写的对象具有拷贝功能?

🔥谈谈事件的产生和传递和响应

🔥🔥谈谈 iOS 中图片的解压缩