Load和Initialize
wanyakun 5/31/2021
这两个方法会经常被问到,主要是调用方式、调用时刻和调用顺序。下面逐个分析和对比。
# Load
# Load方法的调用
- 调用方式: 系统自动调用+load方法为直接通过函数地址调用,开发者手动调用+load方法为消息机制
objc_msgSend
函数调用 - 调用时刻: +load方法会在Runtime加载类和分类时调用,不管有没有用到这些类,在程序运行起来的时候都会加载进内存,并调用+load方法
- 调用顺序:
- 先调用类的+load方法,按照编译先后顺序调用(先编译,先调用),调用子类的+load方法之前会先调用父类的+load方法。
- 再调用分类的+load方法,按照编译先后顺序调用(先编译,先调用),注意:分类的其他方法是后编译优先调用