category和extension
2020-12-06 本文已影响0人
CyberDunk1997
1. 分类可以做什么?
- 声明私有方法
- 分解体积庞大的类文件
2.特点
- 运行时决议
- 可以为系统类添加分类
3. Category可以添加哪些内容
- 实例方法
- 类方法
- 协议
- 属性(只能声明setter和getter,并没有实现)
4. 分类的特性
- 分类添加的方法可以“覆盖”原类的方法(实际上原类的方法还在内存中,只不过分类方法在原类的前面,当方法选择器sel去方法列表中寻找方法时,在前面的分类方法先返回了,自然不会再访问在后面的原类方法)
- 同名分类方法谁能生效取决于编译顺序,最后被编译的分类方法,会最优先生效
- 名字相同的分类会引起编译报错
5. 为分类添加成员变量
- 通过关联对象的技术来为分类添加成员变量
相关方法
本质
本质关联对象的结构
关联对象结构2. Extension
2.1 Extension可以做什么
- 声明私有属性
- 声明私有方法
- 声明私有成员变量
2.1 Extension和Category的区别
- 编译时决议
- 只能声明的形式存在,多数情况下寄生于宿主类的.m文件中
- 不能为系统类添加扩展