iOS下isMemberOfClass和isKindOfClas

2019-03-07  本文已影响0人  lovelnly

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

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

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

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

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

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读