我想覆盖一个我没有源代码的 Objective C 类中的方法。
我已经调查过了,似乎类别应该允许我这样做,但我想在我的新方法中使用旧方法的结果,使用 super 来获取旧方法的结果。
每当我尝试这个时,我的方法都会被调用,但是“super”是 nil ......知道为什么吗?我正在使用 XCode 2.2 SDK 进行 iPhone 开发。我肯定在使用一个类的实例,而该类的方法是一个实例方法。
@implementation SampleClass (filePathResolver)
-(NSString*) fullPathFromRelativePath:(NSString*) relPath
{
NSString *result = [super fullPathFromRelativePath: relPath];
... do some stuff with the old result
return result;
}
注意和澄清:从我在 Apple Docs 中看到的内容来看,在我看来这应该被允许吗?
developer.apple.com 上的类别文档: 当类别覆盖继承的方法时,类别中的方法可以像往常一样通过向 super 发送消息来调用继承的实现。但是,如果一个类别覆盖了该类别的类中已经存在的方法,则无法调用原始实现。