iOS isKindOfClass 和 isMemberOfClass 方法区别

1,这里先比较 俩个的对象方法,也就是减号方法

isMemberOfClass 是直接判断俩边所属的类对象是否相等。源码展示


isMemberOfClass对象方法

isKindOfClass 是遍历当前类以及它的父类 和传入类的类对象是否相等。源码展示


iOS isKindOfClass 和 isMemberOfClass 方法区别_第1张图片
isKindOfClass对象方法

2,然后比较俩者之间的类方法

isMemberOfClass 判断当前对象ISA指针指向元类(因为本身就是类对象)是否传入的类型相等,简而言之就是判断当前对象的元类是否是传入对象相等。源码如下


isMemberOfClass类方法

isKindOfClass 判断当前类ISA指针指向的元类(因为本身就是类对象以及寻找父元类(遍历))是否等于传入的类,如果传入的是[ NSObject class]的话,是永相等的,因为根元类就是NSObject,根元类的superclass指向NSObject。源码如下


iOS isKindOfClass 和 isMemberOfClass 方法区别_第2张图片
isKindOfClass类方法

你可能感兴趣的:(iOS isKindOfClass 和 isMemberOfClass 方法区别)