要点
1. 什么时候使用类别,有什么限制,如何选择用类别还是继承
2. 了解什么是类扩展
什么是类别
类别(category)允许对现有累进行扩展,在现有的类中添加用户自己的方法。有些类似于C#的扩展方法。
什么时候使用类别
- 有时我们需要在一个已经定义好的类中增加一些方法,而不想去改写该类。通常的原因是已经有其他代码调用了该类创建对象并使用该类的方法,不能用继承又不方便修改类本身时,这时可以使用类别对该类进行轻量化的扩充,添加新的方法。
- 一个类过于庞大,可以对类进行一些拆分方便管理。
类别的使用限制
- 类别只能扩充方法,而不能扩充成员变量。
- 类别中的方法与现有方法重名时将完全覆盖原本类方法。也就是说没有途径访问原本类方法,不能用类似super的样子调用。这极大的限制了类别的作用。
类扩展
即class extension,一种特殊的匿名的类别,看起来像下面这样。
@interface classA ()
{
NSString* str;
int a;
}
-(void)Method;
@end
class extension可以定义变量和property,可以有多个,默认在生成的.m文件最上方就有一个,通常用于实现类似于私有变量、方法的功能。