доступ к «супер» через указатель на объект класса - PullRequest
1 голос
/ 02 апреля 2012

У меня есть класс SimpleButton. Это ребенок класса Button. У класса Button есть некоторый метод, который переопределен в SimpleButton. Теперь, если я хочу получить доступ к этому методу из simpleButton, мне просто нужно вызвать [super someMethod]; Но как получить доступ к нему извне simpleButton? Я пытался

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

но это не работает ...

1 Ответ

2 голосов
/ 02 апреля 2012

Вы не можете так делать. Если вы переопределили метод в подклассе, то вы изменили общедоступный метод этого класса, чтобы он стал тем, который используется в вашей реализации. Вы должны иметь отдельный метод, который просто вызывает супер реализацию:

Скажем, вы переопределили метод foo. Создайте новый метод, superFoo

[button superFoo];

Что внутренне делает это:

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

Однако, если вам нужно сделать что-то подобное, вам, вероятно, нужно переосмыслить, почему вы переопределили метод в первую очередь. Возможно, у вас должен быть новый метод для вашего подкласса, который выполняет уникальные части и вызывает саму супер реализацию, а не переопределяет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...