美文网首页iOS开发你需要知道的
iskindOfClass & isMemberOfClass

iskindOfClass & isMemberOfClass

作者: 含笑州 | 来源:发表于2020-09-16 17:51 被阅读0次

现象

看下面关于iskindOfClass & isMemberOfClass的代码,分析出最终结果

iskindOfClass & isMemberOfClass 类方法调用:

iskindOfClass & isMemberOfClass 实例方法调用:

打印结果如下

分析

isKindOfClass 源码解析(类方法 & 实例方法 )

类方法:

类方法

实例方法:

实例方法

我们在断点调试源码的时候,我们发现上面的类方法和实例方法是不走的,它的方法如下:

我们发现NSObject的isa是它自己本身,所以re1和re5为1,LGPerson class的isa是它的元类,所以re3为0,LGPerson alloc的isa是LGPerson class,所以re7为1

isMemberOfClass 源码解析(类方法 & 实例方法 )

类方法:

我们发现它会拿当前类的元类和传入类进行比较,所以re2和re4都为0

实例方法:

我们发现这个方法会拿当前类直接和传入的类进行比较,所以re6和re8都为1

总结

isKindOfClass

元类 --> 根元类 --> 父类  与 传入类的对比

isMemberOfClass

类方法: 当前类的元类 与 传入类 对比

实例方法:当前类 与 传入类 对比

相关文章

网友评论

    本文标题:iskindOfClass & isMemberOfClass

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