分类(Category)是Objective-C的一项重要特性,它可以对已有的类进行扩展,添加方法。理解分类的用法可以更灵活地对类进行组织和扩展。
分类的定义
分类使用category关键字定义,语法如下:
@interface ClassName (CategoryName)
// 添加的方法声明
@end
分类中可以添加任意方法声明,但是不能添加实例变量。
例如对Person类定义一个Extracategory:
@interface Person (ExtraCategory)
- (void)extraMethod;
@end
分类的实现
在实现文件(.m)中实现分类中声明的方法:
@implementation Person (ExtraCategory)
- (void)extraMethod {
// 方法实现
}
@end
分类实现必须在@implementation类名之后,不能单独实现。
使用分类
定义好分类后,可以通过类名直接调用分类中的方法:
Person *p = [[Person alloc] init];
[p extraMethod];
编译器会自动将分类内容合并到原始类中。
分类的作用
分类主要有以下用途:
- 将类的实现分离到多个文件中
- 扩展其他开发者实现的类,添加方法
- 分解庞大的类接口,以组织代码
总结来说,分类是Objective-C特有的代码组织方式,可以灵活地扩展类的功能。