美文网首页
isKindOfClass&isMemberOfClass

isKindOfClass&isMemberOfClass

作者: 顺其自然2017 | 来源:发表于2022-01-06 19:05 被阅读0次

在面试的时候被问到了这两个方法的,因为没有看过原代码逻辑,所以搞懵了,在这里学习mark一下

(1)isKindOfClass 判断当前对象的类是否是某个类或者某个类的子类,是的话返回YES

(2)isMemberOfClass 判断当前对象的类是否是某个类,是的话返回YES

    这两个方法分为类方法和实例方法,但是消息的接受者必须是一个对象通过对象获取对象的类与后面的入参类进行对比,实例方法直接通过class方法获取当前对象的对应类;类方法通过object_getClass()方法获取当前类的元类一般元类和类是不相同的,所以如果向类对象发送上面isMemberOfClass类方法,永远是NO,对于isKindOfClass存在一种特殊情况,即NSObject的特殊形式,因为NSObject的元类的父类还是它自己,所以[(id)[NSObject class]isKindOfClass:[NSObject class]]返回的结果是YES。

参照内容:

两个方法内部实现 实例/类/元类关系图

相关文章

  • isKindOfClass&isMemberOfClass

    在面试的时候被问到了这两个方法的,因为没有看过原代码逻辑,所以搞懵了,在这里学习mark一下 (1)isKindO...

网友评论

      本文标题:isKindOfClass&isMemberOfClass

      本文链接:https://www.haomeiwen.com/subject/dtyrcrtx.html