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