class-continuation分类和普通分类不同,没有名字,必须定义在其所接续的类的实现文件中,是唯一能声明实例变量的分类。
EOCPerson类的class-continuation分类:
// 实现文件中
@interface EOCPerson()
// 可以定义方法、属性、实例变量
@end
class-continuation分类用法一:
无需对外公开但应该具有的方法、实例变量,可以使用class-continuation分类。(虽然运行时系统的工作决定不可能实现真正的私有方法与实例变量)
@interface EOCPerson() {
// 定义实例变量 在class-continuation分类
NSString *_anInstanceVariable;
}
@end
@implementation EOCPerson {
// 定义实例变量 在实现块 与定义在class-continuation分类等效
int *_anotherInstanceVariable;
}
@end
class-continuation分类用法二:
在编写Objective-C++代码时,实现文件扩展名可能为.mm,.mm扩展名表示编译器应该将此文件按照Objective-C++编译,否则无法正确引入C++文件。
应该在实现文件加载C++文件,在class-continuation分类中声明C++实例变量。
理由:如果在一个类头文件加载C++文件,那么所有引入此类的文件都必须编译为Objective-C++才行,他们也都引入了C++文件,所以这样做不合适。
class-continuation分类用法三:
在公共接口声明为“只读”的属性扩展为“可读写”,属性的内存管理语义不能改变,必须相同。
class-continuation分类用法四:
类的私有方法可以声明在class-continuation分类中,这样可以把类里面所含的相关的方法都统一描述于此。
现在的编译器已经不强制在使用方法之前必须先声明。
class-continuation分类用法五:
若对象所遵从的协议不想为人所知,则可在class-continuation分类中声明。