+(void)load; +(void)initialize;有什么用处?
总得来说:
1.+load
方法是在main函数之前调用的;
2.遵从先父类后子类,先本类后列类别的顺序调用;
3.类,父类与分类之间的调用是互不影响的.子类中不需要调用super方法,也不会调用父类的+load
方法实现;
4.无论该类是否接收消息,都会调用+load
方法;
总得来说:
1.+initialize
方法是在main函数之后调用的;
2.+initialize
方法遵从懒加载方式,只有在类或它的子类收到第一条消息之前被调用的;
3.子类中不需要调用super方法,会自动调用父类的方法实现;
4.+initialize
只调用一次,init
可多次调用.
+ load与+ initialize的异同
load方法常用来method swizzle,initialize常常用于初始化全局变量和静态变量.
load方法:父类>子类>分类
注意:当存在继承关系的两个文件时,不管父类文件是否排在子类或其他文件的前面,都是优先调用父类的,然后调用子类的。
例如:compile sources中的文件顺序如下:SubB、SubA、A、B,load的调用顺序是:B、SubB、A、SubA。
分析:SubB是排在compile sources中的第一个,所以应当第一个被调用,但是SubB继承自B,所以按照优先调用父类的原则,B先被调用,然后是SubB,A、SubA。
转自:https://blog.csdn.net/qq_31810357/article/details/70622276
在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……