码迷,mamicode.com
首页 > 其他好文 > 详细

054*: load、initialize 区别

时间:2021-01-01 12:35:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:消息   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!