一. load 方法
1.+load方法会在runtime加载类、分类时调用
2. 每个类、分类的+load,在程序运行过程中只调用一次
3.调用顺序
3.1 先调用类的+load, 按照编译先后顺序调用(先编译,先调用)
3.2调用子类的+load之前会先调用父类的+load
3.3.再调用分类的+load,按照编译先后顺序调用(先编译,先调用)
4. 直接拿IMP 执行load方法, 不走objc_msgSend
二. initialize 方法
1. initialize方法会在类第一次接收到消息时调用
2.先调用父类的+initialize,再调用子类的+initialize (先初始化父类,再初始化子类,每个类只会初始化1次
3. +initialize是通过objc_msgSend进行调用的, 如果子类没有实现+initialize,会调用父类的+initialize(所以父类的+initialize可能会被调用多次)