美文网首页
Objective-C 的load和initialize方法的区

Objective-C 的load和initialize方法的区

作者: lq_ios | 来源:发表于2021-11-08 10:09 被阅读0次

调用方式

1.load 是根据函数地址直接调用

2.initialize是通过objec_msgSend调用

调用时刻

1.load 是runtime加载类,分类的时候调用

2.initialize是类第一次接收到消息的时候调用,每个类只会调用initialize移除,但是父类的initialize可能会被多次调用

load的调用顺序

1.先调用类的load,

  • 先编译的类,优先调用load

  • 调用子类的load之前,会先调用父类的load

2.再调用category的load方法

  • 先编译的分类,优先调用load

initialize的调用顺序

1.先初始化父类

2.初始化子类,子类中如果没有实现initialize,会调用父类的initialize,这也是为什么父类的initialize会被多次调用

在源码中查看

源码地址

objc-os.mm -> void _objc_init(void) -> load_images -> prepare_load_methods -> call_load_methods

相关文章

网友评论

      本文标题:Objective-C 的load和initialize方法的区

      本文链接:https://www.haomeiwen.com/subject/ekruzltx.html