40 votes

Quelle #39 la différence entre les protocoles formels et informels dans Objective-C?

Quelle est la différence entre les protocoles formels et informels dans Objective-C?

58voto

sdolan Points 15572

À Partir De La Documentation Officielle

Formel et Informel des Protocoles

Il existe deux variétés de protocole, formel et informel:

  • L' informel est un protocole de la catégorie sur NSObject, ce qui implicitement presque tous les objets à adopter le protocole. (Une catégorie est un langue fonctionnalité qui vous permet de ajouter des méthodes à une classe sans sous-classement.) La mise en œuvre de la méthodes, dans un cadre informel protocole est facultatif. Avant d'appeler une méthode, l'objet appelant vérifie si l'objet cible met en œuvre c'. Jusqu'à ce protocole facultatif méthodes ont été introduites en Objective-C 2.0, informel protocoles ont été essentiels à la le chemin de la Fondation et AppKit classes mise en œuvre la délégation.

  • Un officiel de protocole déclare une liste de méthodes que client classes sont appelés à mettre en œuvre. Officiel des protocoles ont leur propre déclaration, l'adoption, et la vérification de la syntaxe. Vous pouvez désigner les méthodes dont la mise en œuvre est obligatoire ou facultatif avec le @requis et @facultatif mots-clés. Les sous-classes héritent formelle protocoles adoptés par leurs ancêtres. Un protocole formel peut aussi adopter d'autres les protocoles.

Les protocoles officiels sont une extension l'Objective-C langue.

2voto

Amol Manwatkar Points 51

La langue Objective-C fournit un moyen de déclarer officiellement une liste de méthodes (y compris les propriétés déclarées) comme un protocole. Les protocoles formels sont pris en charge par la langue et le système de durée. Par exemple, le compilateur peut vérifier les types basés sur les protocoles, et les objets peuvent introspection au moment de l'exécution pour signaler si ou non, ils se conforment à un protocole.

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