2010-05-20 17 views
14

Jeśli wdrożenie podklasy, można, w ramach implementacji, jawnie wywołać metodę nadklasy, nawet jeśli już nadpisane, że metoda, czyli:Jak wywołać metodę nadklasy obiektu Objective-C z innego miejsca?

[self overriddenMethod]; //calls the subclass's method 
[super overriddenMethod]; //calls the superclass's method 

Co jeśli chcesz wywołać metodę nadklasy męska gdzieś poza implementacją podklasy, tj .:

[[object super] overriddenMethod]; //crashes 

Czy to możliwe? A co za tym idzie, jest to możliwe, aby przejść się więcej niż jeden poziom w realizacji, tj:

[[super super] overriddenMethod]; //will this work? 

Odpowiedz

20

bardziej przyjemna opcja (do debugowania) jest dodanie metody kategorii, która zrobi to za ciebie:

- (void) callSuperMethod { [super overriddenMethod]; } 

Fakt, że nie ma bardziej wygodnym sposobem na to jest bardzo dużo przez projekt.

13

można wysyłać [[[object class] superclass] methodForSelector: ...] i powoływania się przez wskaźnik IMP bezpośrednio, jeśli chcesz ... ale jeśli jesteś robiąc to, prawdopodobnie jest coś bardzo nie tak z projektem twojej aplikacji.

+1

Brak projektu. Potrzebujesz tego do debugowania. – executor21

+0

W takim przypadku odeprzyj IMP. :) –

Powiązane problemy