美文网首页
iOS 底层学习8 -- initialize方法学习2

iOS 底层学习8 -- initialize方法学习2

作者: 恋空K | 来源:发表于2020-06-19 01:57 被阅读0次


上图先判断自己有没有初始化,自己没有初始化,就会进入_class_initialize方法。



进入了_class_initialize方法,就会判断父类有没有初始化,

父类一切ok了,才会进入上图的callInitialize方法



上图是callInitialize方法的现实。


每次调用alloc,里面都会做上图中的判断。
MJStudent 第一次调用alloc的时候,它就会进入判断里面,一旦进入里面,就意味着已经初始化了,既然已经初始化,那你后面在调用alloc的话,那上图中的条件(if(自己没有初始化))就不会成立,所以里面的代码永远都不会在执行。








上图中MJPerson的initialize方法调用了三次,但不代表MJPerson初始化了3次。而是分别代表MJPerson,MJStudent, MJTeacher,分别初始化了一次。第一句是MJPerson的初始化,第二句是MJStudent的初始化,第三句是MJTeacher的初始化, 只是MJStudent和MJTeacher没有现实initialize方法,所以通过消息发送机制,调用了MJPerson的initialize方法。




相关文章

网友评论

      本文标题:iOS 底层学习8 -- initialize方法学习2

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