美文网首页
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