réponse simple serait Protocole.
Simple mais fausse. Un protocole est une spécification d'interface. C'est une collection de messages qu'un objet doit (en ignorant le mot-clé @optional
pour l'instant) répondre à.
Le terme «fonction virtuelle» n'a pas de contrepartie directe dans Objective-C. En Objective-C vous n'appelez pas de fonctions sur les objets, vous leur envoyez des messages. L'objet lui-même décide ensuite comment répondre au message, généralement en recherchant le message dans son objet de classe, en trouvant la méthode associée et en l'invoquant. Notez que tout cela se produit au moment de l'exécution, pas au moment de la compilation.
Le mappage entre les messages (ou «sélecteurs» pour leur donner leur terme technique) et les méthodes est entièrement construit à partir du . Les déclarations de méthode dans le @interface
sont uniquement là pour donner au compilateur les informations dont il a besoin pour vous avertir que vous avez peut-être oublié une implémentation de méthode. Et ce n'est qu'un avertissement car vous ne pouvez pas dire avant l'exécution si l'objet répond vraiment au message ou non. Par exemple, quelqu'un d'autre pourrait ajouter une catégorie à une classe existante qui fournit des implémentations pour des méthodes manquantes, ou une classe pourrait surcharger forwardingTargetForSelector:
pour transférer les messages auxquels elle ne répond pas ailleurs.
http://stackoverflow.com/questions/5222083/implement-a-pure-virtual-method-in-objective-c –