内容简介:本系列主要是看完MJ的OC底层原理课程所写的总结,希望自己能加深对iOS底层的了解。
本系列主要是看完MJ的OC底层原理课程所写的总结,希望自己能加深对iOS底层的了解。
Category的使用场合
- 拓展系统类的功能
- 给现有的类添加方法
- 可以替换原来类的方法
- 分类中重写load方法不会替换原来类的load方法
原理
struct category_t
- 分类的方法列表会分别合并到__Class__方法列表和__Meta-Class__方法列表
- 当消息发送的时候,遍历方法列表,由于分类的方法在列表的前面所以优先调用分类的方法,从而实现替换原来类的方法
load与initialize对比
条件 | +load | +initialize |
---|---|---|
关键方法 | (*load_method)(cls, SEL_load) |
objc_msgSend |
调用时机 | 被添加到 runtime 时 | 收到第一条消息前,可能永远不调用 |
调用顺序 | 父类->子类->分类 | 父类->子类 |
调用次数 | 1次 | 多次 |
是否需要显式调用父类实现 | 否 | 否 |
是否沿用父类的实现 | 否 | 是 |
分类中的实现 | 类和分类都执行 | 覆盖类中的方法,只执行分类的实现 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
产品经理的第二本书
[美] 哥乔斯 / 戴维侬 / 中国财政经济出版社 / 2004-4 / 39.80元
产品经理的第二本书:产品经理实战技巧指南,ISBN:9787500570950,作者:(美)琳达·哥乔斯(Linda Gorchels)著;戴维侬译;戴维侬译一起来看看 《产品经理的第二本书》 这本书的介绍吧!