美文网首页IOS知识积累
iOS底层学习 -- six day

iOS底层学习 -- six day

作者: 恋空K | 来源:发表于2020-06-09 10:16 被阅读0次

+load方法会在runtime加载类,分类时调用
一个类的load方法,不管这个类会不会被用到,程序一启动,在进入main函数之前,都会先调用类的load方法。(项目中的所有类,分类,不管会不会被用到,都会被加载到内存中去的)




上图中,MJPerson+test2 是比MJPerson+test1稍晚点参与编译的,越是往后参与编译的,越优先调用。

load方法调用时机:在runtime加载类,加载分类的时候,就会调用它们对应的load方法。




由上图可知,会先用类的load方法,类的load方法调用完了,在调用分类的load方法。



load方法是通过方法地址,直接调用的。















由以上截图可以得知:类的load方法调用顺序跟类的编译顺序有关,但是调用子类的load方法之前会先调用父类的load方法。分类的load方法的调用顺序跟分类的编译顺序有关。(load方法只会调用一次,从始至终都只会调用一次)

首先会先调用完所有类的load方法,才会去调用分类的load方法





我们手动调用laod方法([MJStudent load]),就要走消息发送流程了(也就是消息发送机制)

相关文章

网友评论

    本文标题:iOS底层学习 -- six day

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