分类(Category)
分类的作用
1.声明私有属性
2.分解体积庞大的类文件
3.把Framework的私有方法公开
特点
1.运行时决议
2.可以为系统类添加分类
3.分类添加的方法可以“覆盖”原类方法(覆盖指的是分类方法位于原类方法之前,加载的是分类的方法)
4.同名分类方法谁能生效取决于编译顺序
5.名字相同的分类会一起编译错误
分类可以提那家哪些内容?
1.实例方法
2.类方法
3.协议
4.属性(只添加了set和get方法,没有添加实例变量)
关联对象为分类添加的对象,对象存放在哪里?
关联对象由AssociationManager管理并在AssociationsHashMap存储。
所有对象的关联内容都在同一个全局容器中。
关联对象添加的实例变量并没有添加到宿主类中。
扩展(extension)
扩展的作用
1.声明私有属性
2.声明私有方法
3.声明私有成员变量
特点
1.编译时决议
2.只以声明的形式存在,多数情况下寄生于宿主类的.m中
3.不能为系统类添加扩展。