有什么优点和优点?使用类别的缺点?为什么&什么时候需要它们?
答案 0 :(得分:6)
优点:
您可以扩展您没有源的任何类,甚至是那些类。例如,查看Apple添加到NSString
类的UI扩展,以便进行渲染,获取指标等。
由于您可以访问所有实例变量,因此类别为您提供了一种很好的方法,可以使用逻辑分组在编译单元之间构建代码,而不是采用“必须全部在一个物理位置”的方法,例如,由Java。
缺点:
AFAIK,如果您尝试以下内容,语言无法保证实际调用哪个实现:
@interface Foo { }
- (void) method;
@end
@interface Foo (MyCategory)
- (void) method;
@end