iOS下isMemberOfClass和isKindOfClass的区别

关于面试中经常会问到isMemberOfClass和isKindOfClass区别,大家可能都能回答出一一二二,但是为什么这样呢?下面我们来一起探讨一下。

首先我们看一下isMemberOfClass 的底层实现:

isMemberOfClass下类方法和实例方法的底层实现
object_getClass 底层实现

从上图我们不难看出 isMemberOfClass 方法在底层进行调用时,就是对类的本身进行一个判断,也就是说不会进行更多的操作。

下面我们看一下isKindOfClass的底层实现:


isKindOfClass下类方法和实例方法的底层实现

从上述代码片段我们不难看出,isKindOfClass的判断不仅仅是判断是当前类,还会逐级的根据继承关系向上查找,在类方法下会一直进行查找直到根元类,在对象方法中则会一直查找到基类。

以上就是个人理解的二者的区别,如有错误,敬请指出。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容