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