分类(Category)
- 只能扩展方法(随便.m文件)
- 声明的@property只会生成getter setter方法的声明
- 不产生新类,不修改原类
- 同名方法,分类的优先级高
类别主要有3个作用:
(1)将类的实现分散到多个不同文件或多个不同框架中。
(2)创建对私有方法的前向引用。(类不声明但实现方法有警告,若在分类中声明一下就消除警告)
(3)向对象添加非正式协议。(括号是非正式协议,尖括号是正式协议) 非正式协议的方法可以不实现
类扩展(Extensions)
- 声明的方法必须实现(在类的.m文件中)
- 可以添加实例变量
- 不产生新类
- 匿名(私有)的分类
协议(Protocol)
- 声明的@property只会生成getter setter方法的声明
- 只声明方法,由代理实现方法
- 支持多继承
委托(delegate)
- 主要用于解耦
类继承(Inherit)
- 能修改方法 添加实例变量
- 产生了新类
- 同名方法,分类的优先级高