- iOS +(void)load和+(void)initiali
- iOS开发+(void)load与+(void)initiali
- 文档+load +initialize
- iOS开发 +(void)load 和 +(void)initi
- + (void)load和 + (void)initialize
- + (void)load 和 + (void)initializ
- + (void)load和 + (void)initializ
- +(void)load; +(void)initialize;
- 问题[◇◇◇◇◇]:+(void)load; +(void)in
- + (void)load + (void)initialize
对+(void)load和+(void)initialize进行总结 ;
+(void)load详解;
+(void) intialize详解;
1.+ (void)load的调用流程为?
+(void)load
方法会在runtime
编译加载类和分类时调用, 通过函数指针的方式直接调用, 并不是通过objc_msgSend()
(此方式需要通过 isa
和superclass
来查找方法)的方式调用;
-
+(void)load
会在runtime
加载类和分类时调用; - 每个类/分类的
+(void)load
方法只会调用一次; - 调用顺序多个类按照编译的顺序先后调用
+(void)load
方法; - 调用子类的
+(void)load
方法时会先调用父类的+(void)load
方法; - 最后按照编译的顺序调用分类的
+(void)load
方法;
具体验证部分参考分类(Category)部分二的开始部分;
2. +(void)initialzie的调用流程为?
通过objc_msgSend()
的方式调用(需要通过 isa
和superclass
来查找方法);
-
+(void)initialize
方法会在类第一次收到消息时调用; - 先调用父类方法
+(void)initialize
, 然后再调用子类的+(void)initialize
; - 每个类/分类的
+(void)initialize
方法只会调用一次(特殊情况:父类的可能会调用多次); - 如果多个分类实现
+(void)initialize
方法则后面编译的会覆盖前面的分类和类的+(void)initialize
方法;
网友评论