美文网首页
load与initialize对比

load与initialize对比

作者: xiny123 | 来源:发表于2019-02-13 11:07 被阅读0次

    load

    1. +load方法会在runtime加载类、分类时调用
    1. 每个类、分类的+load,在程序运行过程中只调用一次
    1. 调用顺序:

    3.1 先调用类的+load(按照编译先后顺序调用(先编译,先调用),调用子类的+load之前会先调用父类的+load)

    3.2 再调用分类的+load(按照编译先后顺序调用(先编译,先调用))

    initialize

    1. initialize方法会在类第一次接收到消息时调用
    1. 调用顺序

    2.1 先调用父类的+initialize,再调用子类的+initialize

    2.2 先初始化父类,再初始化子类,每个类只会初始化1次

    load与initialize对比

    条件 +load +initialize
    关键方法 (*load_method)(cls, SEL_load) objc_msgSend
    调用时机 被添加到 runtime 时 收到第一条消息前,可能永远不调用
    调用顺序 父类->子类->分类 父类->子类
    调用次数 1次 多次
    是否需要显式调用父类实现
    是否沿用父类的实现
    分类中的实现 类和分类都执行 覆盖类中的方法,只执行分类的实现

    相关文章

      网友评论

          本文标题:load与initialize对比

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