相关疑难解决方法(0)

在Objective C类别中使用Super?

我想覆盖Objective C类中我没有源代码的方法.

我已经研究过了,看来Categories应该允许我这样做,但是我想在我的新方法中使用旧方法的结果,使用super来获得旧方法的结果.

每当我尝试这个时,我的方法被调用,但"超级"是零...任何想法为什么?我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)

注意和澄清:从我在Apple Docs中看到的情况来看,在我看来应该允许这样做?

developer.apple.com上的类别文档: 当类别覆盖继承的方法时,类别中的方法可以像往常一样通过消息调用继承的实现到超级.但是,如果某个类别覆盖了类别类中已存在的方法,则无法调用原始实现.

objective-c super categories

24
推荐指数
2
解决办法
1万
查看次数

在类别中调用super与在子类中调用它相同吗?

调用是否[super init]在类别中作为子类执行相同的操作?如果没有,有什么区别?

subclass objective-c categories

12
推荐指数
2
解决办法
3722
查看次数

标签 统计

categories ×2

objective-c ×2

subclass ×1

super ×1