通过指向类对象的指针访问“super”

时间:2012-04-02 06:59:40

标签: iphone

我有一些课SimpleButton。这是Button班的孩子。 Button类有一些方法,在SimpleButton中被覆盖了。现在,如果我想从simpleButton访问此方法,我只需要致电[super someMethod];但是如何从simpleButton之外访问它?我试过了

SimpleButton *button;
[(Button*)button.superclass someMethod]; 

但这不起作用......

1 个答案:

答案 0 :(得分:2)

你不能这样做。如果您已在子类中重写了一个方法,那么您已将该类的公共方法更改为实现中的方法。你必须有一个单独的方法,它只调用超级实现:

假设您已覆盖方法foo。创建一个新方法superFoo

[button superFoo];

内部是这样做的:

-(void)superFoo
{
    [super foo];
}

但是,如果您需要执行此类操作,那么您可能需要重新考虑为什么首先覆盖该方法。也许你应该在你的子类上有一个新的方法,它执行独特的部分并调用超级实现本身,而不是覆盖。