假设Apple在私有头文件中定义了API:
// Can't see this at all
@interface NSThing
- (void)secretMethod;
@end
我有一个类别:
@interface NSThing (Helpers)
- (void)secretMethod;
@end
这是否会覆盖 Apple 的实现,他们的其他私有方法是否会开始调用我的实现?
来自 "避免类别方法名称冲突":
如果类别中声明的方法的名称与方法相同 在原始类中,或在同一类上的另一个类别中的方法 类(甚至是超类),行为未定义哪个 方法实现在运行时使用。这不太可能是 如果您将类别与自己的类一起使用,则出现问题,但可能会导致 使用类别向标准可可添加方法时出现问题,或 可可触摸课程。
因此,如果您"不小心"实现了与现有方法(私有或非私有),行为是未定义的。
因此,您应该在类别方法前面加上一个前缀,使名称冲突的可能性不大。