1、声明
@interface NSString (NumberConvenice)
- (NSNumber *) lengthAsNumber;
@end
我们可以看出,这个声明有两个特点
首先,是位于类名后面有一个圆括号,表明类别名称。需要保证该类别名称的唯一性
其次,你不仅可以指定添加分类的名称,而且还可以列出添加的方法。
2、实现
@implemation NSString (NumberConvenice)
- (NSNumber *) lengthAsNumber
{
unsigned int length = [self length];
return ([NSNumber numberWithUnsignedInt:length]);
}
@end
与声明相似,实现也有类名和分类名以及新方法的正文部分
3、类别的局限性
1)无法向类中添加新的实例变量
2)如果分类中定义的方法与原有类的冲突,那么,原有类的将被覆盖。
4、分类的意义
如果想将大型的单个类的实现分散到不同的类别中去,那分类是你的最好选择
这里引用了一段话,来说明分类的好处
1、方便程序员理解程序框架、查看和了解方法所处在的位置
2、便于扩展现有类的方法,不需要访问类的源代码,也无需创建子类
3、和一般的接口不同,不必实现分类中的所有方法
这里,第三条说明分类相当于一个非正式协议
而定义一个空分类,可以变相的实现私有方法