2012-04-02 18 views
1

Ich habe eine Klasse SimpleButton. Es ist ein Kind der Button Klasse. Button Klasse hat eine Methode, die in SimpleButton übergangen wurde. Nun, wenn ich Zugang zu dieser Methode von simpleButton bekomme, muss ich nur anrufen [super someMethod]; Aber wie bekomme ich Zugang von außerhalb von simpleButton? Ich habe versucht,Zugriff auf "Super" durch Zeiger auf Klassenobjekt

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

aber das funktioniert nicht ...

Antwort

2

Sie können es so nicht. Wenn Sie eine Methode in einer Unterklasse außer Kraft gesetzt haben, haben Sie die öffentlich verfügbare Methode dieser Klasse in Ihrer Implementierung geändert. Sie müssten eine separate Methode haben, die nur die Super-Implementierung aufruft:

Angenommen, Sie haben die Methode foo außer Kraft gesetzt. Erstellen Sie eine neue Methode, superFoo

[button superFoo]; 

Welche intern tut dies:

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

Wenn Sie jedoch diese Art der Sache tun müssen, dann müssen Sie wahrscheinlich überdenken, warum Sie die Methode in der außer Kraft gesetzt haben erster Platz. Vielleicht sollten Sie stattdessen eine neue Methode für Ihre Unterklasse verwenden, die die eindeutigen Teile ausführt und die Superimplementierung selbst aufruft, anstatt sie zu überschreiben.

+0

Tnx für Antwort. Ich habe schon darüber nachgedacht, aber das ist ein bisschen trottelig. Es scheint, ich sollte die Logik meines Programms überdenken. – SentineL

Verwandte Themen