48 votes

Qu'est-ce exactement est super en Objective-C?

Pour autant que je sais, c'est un pointeur vers la classe mère. Il est câblé avec de la super-classe, et pas de façon dynamique trouvé lors de l'exécution. Voudrais savoir plus en détail...

N'importe qui?

46voto

Benoit Points 39210

super

Essentiellement, il vous permet d'utiliser les implémentations de l'actuel de la classe de super-classe.

Pour le graveleux détails de l'Objective-C runtime:

[super message] a la signification suivante:

Lorsqu'il rencontre un appel de méthode, le compilateur génère un appel à l'un de les fonctions objc_msgSend, objc_msgSend_stret, objc_msgSendSuper, ou objc_msgSendSuper_stret. Messages envoyé à un objet de la classe mère (à l'aide de le mot-clé super) sont envoyés à l'aide de objc_msgSendSuper; les autres messages sont envoyé à l'aide de objc_msgSend. Des méthodes qui ont des structures de données comme valeurs de retour sont envoyés à l'aide de objc_msgSendSuper_stret et objc_msgSend_stret.

Donc, oui, il est statique, et pas déterminé au moment de l'exécution.

29voto

Chuck Points 138930

C'est un mot clé qui est équivalent à self, mais il commence son message expédition à la recherche, avec la super-classe de la table des méthodes.

19voto

NSResponder Points 14459

super est pas un pointeur vers une classe. Super est - self, mais lorsqu'il est utilisé dans un message à l'expression, il signifie "rechercher une mise en œuvre en commençant par la super-classe de la table des méthodes."

5voto

David Gelhar Points 20703

Ces billets de blog sur ce qu'est un méta-classe?, l'obtention de sous-classes et les classes et les metaclasses peut vous donner des informations sur le fonctionnement interne de cette.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X