我有以下代码,我正在使用。
@interface SomeDudesSuperClass : NSObject {
}
@end
@interface SomeDudesSuperClass (Category_code_which_others_are_restricted_from_touching)
- (void)SomeDudesMethod;
@end
现在这是我的代码
@interface SomeDudesSuperClass (A_Category_To_Override_A_Method_in_his_category) {
- (void)SomeDudesMethod;
}
@end
我不允许触摸他的代码。如果我只是写另一个类别,将调用哪个方法?我怎样才能调用我的类别方法而不是他的?
答案 0 :(得分:2)
正如rmaddy所说,你所做的并不是一个好主意,并会导致未定义的行为。您不应该尝试覆盖类别中的方法。如果您完全无法触及现有代码,则可以合理地执行以下两项操作之一。
子类SomeDudesSuperClass
并覆盖那里的方法。
使用方法调配将方法实现与您的自定义实现交换而不是覆盖。如果需要,这还为您提供了实现此选项的选项,如正确覆盖并在自定义方法中调用原始实现。
This article by Mike Ash has a very nice explanation of this