70 votes

Qu'est-ce qu'un "délégué" dans le développement iPhone d'Objective C?

Qu'est-ce qu'un "délégué" dans le développement iPhone d'Objective C?

80voto

Tyler Points 16516

Un délégué est un pointeur vers un objet à un ensemble de méthodes le délégué titulaire sait comment appeler. En d'autres termes, c'est un mécanisme à activer des rappels plus tard, à partir d'un objet créé.

Un bon exemple est - UIAlertView. Vous créez un UIAlertView objet pour afficher un court message pour les utilisateurs, éventuellement, leur donnant le choix avec deux boutons comme "OK" et "Annuler". L' UIAlertView besoin d'une manière de vous rappeler, mais il n'a pas d'informations de l'objet de retour d'appel et quelle est la méthode à appeler.

Pour résoudre ce problème, vous pouvez envoyer votre self pointeur UIAlertView en tant que délégué de l'objet, et en échange, vous vous engagez (en déclarant l' UIAlertViewDelegate dans l'objet de votre en-tête du fichier) pour mettre en œuvre certaines des méthodes qui UIAlertView peut appeler, comme alertView:clickedButtonAtIndex:.

Découvrez ce post pour une rapide introduction à la délégué modèle de conception et d'autres de rappel des techniques.

Références:

56voto

Jordan Points 14134

Voir cette discussion

Un délégué permet un objet à envoyer des messages à un autre objet lorsqu'un événement se produit. Par exemple, si vous êtes le téléchargement de données à partir d'un site web de manière asynchrone à l'aide de la NSURLConnection classe. NSURLConnection a trois délégués:

 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
 - (void)connectionDidFinishLoading:(NSURLConnection *)connection
 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

Un ou plusieurs de ces délégués seront appelés lorsque NSURLConnection rencontre un échec, se termine avec succès, ou a reçu une réponse du site web, respectivement.

21voto

MikeN Points 8490

Les délégués sont un modèle de conception; il n'y a pas de support de syntaxe ou de langage particulier.

Un délégué est simplement un objet vers lequel un autre objet envoie des messages lorsque certaines choses se produisent, afin que le délégué puisse gérer les détails spécifiques à l'application pour lesquels l'objet d'origine n'avait pas été conçu. C'est une façon de personnaliser le comportement sans sous-classer.

5voto

Felix Kling Points 247451

Je pense que cet article de Wikipedia le décrit le mieux: http://en.wikipedia.org/wiki/Delegation_pattern

C’est "juste" une implémentation d’un modèle de conception et très courant en Objective-C

3voto

reforged Points 91

Une description très complète de ce modèle est disponible ici: lien iTunes
Conférence 2, je pense.

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