iOS底层学习6 -- load方法学习

+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]),就要走消息发送流程了(也就是消息发送机制)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。