iOS中load、initialize的区别

一个是加载,一个是初始化

Load是在runtime加载类,分类的时候调用的

每个类,分类的load在程序运行中只会调用一次

调用顺序是先调用类的load,按编译顺序,调用子类的load之前会调用父类的load

再调用分类load,也是按照编译先后顺序调用

Load是根据方法地址直接调用的,并不是经过objc_msgSend函数调用

Initalize是在类第一次接收到消息的时候调用的,

调用顺序是先父类再子类

每个类初始化一次,但是父类的initalize会调用多次

Initalize 是通过objc_msgSend调用的

子类没有实现会调用父类的,(父类的initalize会调用多次)

分类如果实现了,会覆盖类本身的

你可能感兴趣的:(iOS中load、initialize的区别)