Qu'est-ce qu'un "délégué" dans le développement iPhone d'Objective C?
Réponses
Trop de publicités?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:
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.
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.
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
Une description très complète de ce modèle est disponible ici: lien iTunes
Conférence 2, je pense.