分类
分类允许在运行时为已有的类添加方法。但无法添加实例变量(因为在运行期,对象的内存布局已经确定,如果添加实例变量就会破坏类的内部布局,这对编译型语言来说是灾难性的)
声明一个分类:
@interface NSMutableString (PTLCapitalize)
- (void)ptl_capitalize;
@end
PTLCapitalize是分类的名字,注意,这里没有声明实例变量。分类无法声明实例变量,也无法合成属性(其实本质是一样的)。
分类可以声明属性是因为属性声明只是方法声明的一种方式,只是不能合成属性,因为那样会创建实例变量。