一、Category 分类
在面对一个类定义时,可能想要添加一些新方法,例如对于 Fraction(分数)类,除了将两个分数相加的 add:方法之外,还想要将两个分数相减、相乘和相除的方法。另外,当参与一个大型程序设计项目,为一个新定义的类编写处理文件系统的方法,并使其模块化。
以上情况的实用解决方案就是使用分类 Category。
- 分类提供了一种简单的方式,将类的定义模块化到相关方法的组或分类中。
- 分类提供了扩展现有类定义的简便方式,不必访问类的源代码,也无需创建子类。
- 可以通过未命名分类实现私有方法
以上例子中,以为 Fraction 添加新方法为例,新的 MathOps 分类的接口部分代码如下:
#import "Fraction.h"
@interface Fraction (MathOps)
-(Fraction*) add:(Fraction*) f;
-(Fraction*) mul:(Fraction*) f;
-(Fraction*) sub:(Fraction*) f;
-(Fraction*) div