美文网首页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