In una sottoclasse, sto sovrascrivendo un metodo che non è esposto nella super classe. So di avere la firma corretta poiché sta sovrascrivendo con successo l'implementazione della superclasse. Tuttavia, come parte della nuova implementazione, ho bisogno di chiamare l'implementazione della superclasse dall'implementazione della sottoclasse.Accesso a un metodo in una super classe quando non è esposto
perché non è esposta devo richiamare il metodo tramite una chiamata a performSelector
:
SEL superClassSelector = NSSelectorFromString(@"methodToInvoke");
[super performSelector:superClassSelector];
Tuttavia, nella mia applicazione questo si traduce in un ciclo ricorsivo infinito in cui l'implementazione del sottoclasse viene richiamato ogni volta che provo a invocare l'implementazione della superclasse.
Qualche idea?
Mi rendo conto che questa è una situazione atipica, ma sfortunatamente non c'è modo di aggirare ciò che sto cercando di fare.
Questo è esattamente l'approccio corretto. In molti casi lo fai con una categoria piuttosto che con un'estensione (usando '(Superclasse)' piuttosto che '()' nell'interfaccia), ma in ogni caso è l'approccio più sicuro e più pulito. –
È fantastico. Assolutamente geniale ... grazie! –
Neat. Soprattutto funziona bene per passare attraverso i metodi delegate, basta riformulare il protocollo: '@interface UIScrollView()' –