Cosa è esattamente super in Objective-C?

Per quanto ne so, è un puntatore alla superclass. È cablato con la superclass e non è stato calcolato dynamicmente in fase di runtime. Vorrei saperne di più in dettaglio …

Chiunque?

    super

    In sostanza, ti consente di utilizzare le implementazioni della superclass di class corrente.

    Per i dettagli grintosi del runtime Objective-C:

    [super message] ha il seguente significato:

    Quando incontra una chiamata al metodo, il compilatore genera una chiamata a una delle funzioni objc_msgSend, objc_msgSend_stret, objc_msgSendSuper o objc_msgSendSuper_stret. I messaggi inviati alla superclass di un object (usando la parola chiave super) vengono inviati usando objc_msgSendSuper; altri messaggi vengono inviati usando objc_msgSend. I metodi che hanno strutture dati come valori di ritorno vengono inviati usando objc_msgSendSuper_stret e objc_msgSend_stret.

    Quindi sì, è statico e non determinato in fase di runtime.

    È una parola chiave che è equivalente a self , ma inizia la ricerca di invio messaggi con la tabella dei metodi della superclass.

    super non è un puntatore a una class. Super è self , ma se usato in un’espressione di messaggio, significa “cercare un’implementazione che inizia con la tabella dei metodi della superclass”.

    Questi post sui blog su che cos’è una meta class? ottenere sottoclassi, classi e metaclassi può darti qualche idea sugli interni di questo.