美文网首页
iOS load方法调用顺序和initialize区别

iOS load方法调用顺序和initialize区别

作者: StevenHu_Sir | 来源:发表于2021-03-12 09:14 被阅读0次

1.load方法

  • 当类或分类被加载到runtime 时被调用,当类被引用进项目的时候就会执行 load 函数(在 main 函数开始执行之前),与这个类是否被用到无关,每个类的 load 函数只会自动调用一次。
  • 父类和子类都实现 load函数时,二者的 load 方法都会被调用,父类的 load 方法执行顺序要优先于子类
  • 当子类未实现 load 方法时,在加载该子类时,不会去调用其父类 load 方法
  • 类中的 load 方法执行顺序要优先于类别
  • 当有多个类别(Category)都实现了 load 方法,这几个 load 方法都会执行,但执行顺序与编译顺序一致
  • iOS不同的类或Category按照编译先后顺序调用+load方法(先编译,先调用)

2.initialize方法

  • 类或者其子类的收到第一条消息之前调用(消息包括实例方法和类方法的调用)
  • initialize 方法是以懒加载的方式被调用的,如果程序一直没有给某个类或它的子类发送消息,那么这个类的 initialize 方法是永远不会被调用的
  • 父类的 initialize 方法会比子类先执行
  • 当子类未实现 initialize 方法时,在该子类收到第一条消息之前,会调用父类 initialize 方法,子类实现 initialize 方法时,则会覆盖父类 initialize 方法
  • 有多个 Category 都实现了 initialize 方法,会覆盖类中的方法,只执行最后那个被编译的,即 Compile Sources 列表中最后一个 Category 的 initialize 方法

相关文章

网友评论

      本文标题:iOS load方法调用顺序和initialize区别

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