Objective c 有何好处?;使用类别的缺点?为什么?;我们什么时候需要它们?

Objective c 有何好处?;使用类别的缺点?为什么?;我们什么时候需要它们?,objective-c,Objective C,使用类别的优点和缺点是什么?为什么和何时需要它们?优势: 您可以扩展任何类,即使是那些没有源代码的类。例如,查看Apple添加到NSString类中的UI扩展,用于呈现、获取度量等 因为您可以访问所有实例变量,所以类别为您提供了一种很好的方法,可以使用逻辑分组而不是Java采用的“它必须位于一个物理位置”的方法跨编译单元构造代码 缺点: 您无法安全地重写类本身或其他类别已定义的方法 顺便说一句,如果您尝试以下操作,这些语言不保证实际调用哪个实现: @interface Foo { } -

使用类别的优点和缺点是什么?为什么和何时需要它们?

优势:

  • 您可以扩展任何类,即使是那些没有源代码的类。例如,查看Apple添加到
    NSString
    类中的UI扩展,用于呈现、获取度量等

  • 因为您可以访问所有实例变量,所以类别为您提供了一种很好的方法,可以使用逻辑分组而不是Java采用的“它必须位于一个物理位置”的方法跨编译单元构造代码

缺点:

  • 您无法安全地重写类本身或其他类别已定义的方法
顺便说一句,如果您尝试以下操作,这些语言不保证实际调用哪个实现:

@interface Foo { }
- (void) method;
@end

@interface Foo (MyCategory)
- (void) method;
@end