美文网首页selector面试好文面试专题(重难点)
load和initialize方法的区别是什么?

load和initialize方法的区别是什么?

作者: 二斤寂寞 | 来源:发表于2019-02-19 18:41 被阅读0次

    loadinitialize方法的区别是什么?

    Demo地址

    调用方式
    1、load是根据函数地址直接调用
    2、initialize是通过objc_msgSend调用

    调用时刻
    1、load是runtime加载类、分类的时候调用(只会调用一次)
    2、initialize是类第一次接收到消息的时候调用, 每一个类只会initialize一次(如果子类没有实现initialize方法, 会调用父类的initialize方法, 所以父类的initialize方法可能会调用多次)

    load和initializee的调用顺序
    1、load:
    先调用类的load, 在调用分类的load
    先编译的类, 优先调用load, 调用子类的load之前, 会先调用父类的load
    先编译的分类, 优先调用load
    2、initialize
    先初始化分类, 后初始化子类
    通过消息机制调用, 当子类没有initialize方法时, 会调用父类的initialize方法, 所以父类的initialize方法会调用多次

    相关文章

      网友评论

        本文标题:load和initialize方法的区别是什么?

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