美文网首页
iOS下isMemberOfClass和isKindOfClas

iOS下isMemberOfClass和isKindOfClas

作者: lovelnly | 来源:发表于2019-03-07 14:19 被阅读0次

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

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

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

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

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

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

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

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

相关文章

网友评论

      本文标题:iOS下isMemberOfClass和isKindOfClas

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