2010-03-11 8 views
0

J'essaie de comprendre la raison pour laquelle je devrais apprendre ces choses sur les délégués et les protocoles. J'ai d'abord pensé que c'était nécessaire pour créer un joli design du code. Puis j'ai commencé à lire et je ne peux pas vraiment trouver les raisons que je pensais que j'allais trouver (c'est-à-dire, «bonnes» raisons ...).Délégation et protocoles appliqués

Quand dois-je appliquer les délégués et les protocoles? Pratique de la vie réelle, ou juste en général bon, des exemples seraient utiles (je connais les caractéristiques des protocoles et des délégués, dans une certaine mesure au moins, donc pas besoin d'expliquer cela).

Merci d'avance!

Répondre

0

L'utilisation de protocoles consiste à spécifier une interface pour les délégués. Un délégué est utilisé pour implémenter ce que les autres langages appellent les rappels.

2

Certains des meilleurs exemples peuvent être trouvés dans le cadre Cocoa. Delegate est un bon exemple.

NSTableView Le délégué permet à la vue d'être hautement personnalisable sans avoir besoin de la sous-classer, mais toute la personnalisation fournie par le délégué est facultative. Si cette personnalisation était implémentée via une sous-classe, la vue devrait prendre connaissance des spécificités du modèle, ce qui romprait le modèle MVC.

Les docs Apple sont une bonne lecture: Cocoa Design Patterns: Delegation

0

Une autre bonne ressource, je suis tombé récemment est le cours de développement d'applications iPhone Université de Stanford disponible gratuitement via iTunesU (http://itunes.stanford.edu/). Dans la leçon 7, ils discutent des meilleures pratiques pour écrire vos contrôleurs de vue et présentent les concepts de délégation et de protocoles.

0

Ils sont géniaux quand une classe doit dire à une autre classe que quelque chose s'est passé et qu'elle devrait faire quelque chose.

Ils aident à gagner du temps qui serait passé sous-classement tout en permettant la personnalisation d'autres classes.

+0

Mais ceci est facilement réalisé en créant une propriété que vous associez à l'autre objet, n'est-ce pas? Quel est l'avantage par rapport à cela? – Nicsoft

+1

Il est vrai qu'une autre classe peut accéder à la valeur de la propriété, mais il est impossible pour une propriété d'avertir une autre classe que sa valeur a changé ou qu'un autre événement s'est produit. – blindjesse

+0

Pourriez-vous donner un bon exemple quand cela peut être nécessaire? – Nicsoft