一、扩展的作用
- 声明私有属性
- 声明私有方法
- 声明私有成员变量
二、扩展的特点
- 编译时决议
- 只以声明的形式存在,多数情况下寄生在宿主类的.m中
- 不能为系统类添加扩展
三、扩展和分类的区别
- 分类是运行时决议;扩展是编译时决议;(所以扩展中声明的方法没有被实现,编译器会报警,但是分类种的方法没有被实现编译器是不会有任何警告的)
- 分类原则上能增加属性,实例方法,类方法,协议,并且是公开的;扩展能添加方法,实例变量,默认是@private类型的,且只能作用于自身类,而不是子类或者其他地方;
- 分类有自己的实现部分;扩展无自己的实现部分,只能依托对应类的实现部分来实现;
- 分类可以为系统类添加分类;扩展不可以为系统类添加扩展;
四 、扩展格式
@interface XXX ()
//私有属性
//私有方法(如果不实现,编译时会报警,Method definition for 'XXX' not found)
@end