Iphone 访问;超级";通过指向类的指针';s对象

Iphone 访问;超级";通过指向类的指针';s对象,iphone,Iphone,我有一些类SimpleButton。它是按钮类的子类Button类有一些方法,这些方法在SimpleButton中被重写。现在,如果我不想从simpleButton访问这个方法,我只需要调用[super-someMethod]但是如何从simpleButton的外部访问它呢?我试过: SimpleButton *button; [(Button*)button.superclass someMethod]; 但这不起作用…你不能那样做。如果您重写了子类中的方法,那么您已经将该类的公共可用方法

我有一些类
SimpleButton
。它是
按钮
类的子类
Button
类有一些方法,这些方法在
SimpleButton
中被重写。现在,如果我不想从
simpleButton
访问这个方法,我只需要调用
[super-someMethod]
但是如何从simpleButton的外部访问它呢?我试过:

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

但这不起作用…

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

假设您已重写方法
foo
。创建一个新方法,
superFoo

[button superFoo];
这是由哪一方内部完成的:

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

然而,如果您需要做这类事情,那么您可能需要重新思考为什么您首先重写了该方法。也许你应该在你的子类上有一个新的方法,它做唯一的部分并调用超级实现本身,而不是重写。

Tnx以获得响应。我已经想过了,但这有点勉强。看来我应该重新思考我的程序的逻辑。