category和extension

1. 分类可以做什么?

  1. 声明私有方法
  2. 分解体积庞大的类文件

2.特点

  • 运行时决议
  • 可以为系统类添加分类

3. Category可以添加哪些内容

  • 实例方法
  • 类方法
  • 协议
  • 属性(只能声明setter和getter,并没有实现)

4. 分类的特性

  • 分类添加的方法可以“覆盖”原类的方法(实际上原类的方法还在内存中,只不过分类方法在原类的前面,当方法选择器sel去方法列表中寻找方法时,在前面的分类方法先返回了,自然不会再访问在后面的原类方法)
  • 同名分类方法谁能生效取决于编译顺序,最后被编译的分类方法,会最优先生效
  • 名字相同的分类会引起编译报错

5. 为分类添加成员变量

  • 通过关联对象的技术来为分类添加成员变量
    相关方法

本质

本质

关联对象的结构

关联对象结构

2. Extension

2.1 Extension可以做什么

  • 声明私有属性
  • 声明私有方法
  • 声明私有成员变量

2.1 Extension和Category的区别

  • 编译时决议
  • 只能声明的形式存在,多数情况下寄生于宿主类的.m文件中
  • 不能为系统类添加扩展
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容