iOS下isMemberOfClass和isKindOfClas
2019-03-07 本文已影响0人
lovelnly
关于面试中经常会问到isMemberOfClass和isKindOfClass区别,大家可能都能回答出一一二二,但是为什么这样呢?下面我们来一起探讨一下。
首先我们看一下isMemberOfClass 的底层实现:


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

从上述代码片段我们不难看出,isKindOfClass的判断不仅仅是判断是当前类,还会逐级的根据继承关系向上查找,在类方法下会一直进行查找直到根元类,在对象方法中则会一直查找到基类。
以上就是个人理解的二者的区别,如有错误,敬请指出。