054*: load、initialize 区别

标签:消息   run   实现   init   col   消息机制   没有   区别   如何   

1:Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗?

  • 有load方法
  • load方法在runtime加载类、分类的时候调用
  • load方法可以继承,但是一般情况下不会主动去调用load方法,都是让系统自动调用

2:initialize方法如何调用,以及调用时机

  • 当类第一次收到消息的时候会调用类的initialize方法
  • 是通过 runtime 的消息机制 objc_msgSend(obj,@selector()) 进行调用的
  • 优先调用分类的 initialize, 如果没有分类会调用 子类的,如果子类未实现则调用 父类的

3:load、initialize方法的区别什么?它们在category中的调用的顺序?以及出现继承时他们之间的调用过程?

  • load 是类加载到内存时候调用, 优先父类->子类->分类
  • initialize 是类第一次收到消息时候调用,优先分类->子类->父类,会覆盖子类和父类的方法。只执行一次。
  • 同级别和编译顺序有关系
  • load 方法是在 main 函数之前调用的

054*: load、initialize 区别

标签:消息   run   实现   init   col   消息机制   没有   区别   如何   

原文地址:https://www.cnblogs.com/zyzmlc/p/14201006.html

版权声明:完美者 发表于 2021-01-01 12:35:24。
转载请注明:054*: load、initialize 区别 | 完美导航

暂无评论

暂无评论...