Objective-C Language
Protocoles et délégués
Recherche…
Remarques
Les protocoles et les délégués sont deux concepts liés mais différents:
Un protocole est une interface à laquelle une classe peut se conformer, ce qui signifie que la classe implémente les méthodes répertoriées.
Un délégué est généralement un objet anonyme conforme à un protocole.
L'application de Délégué appelée Délégation est un modèle de conception.
À une extrémité , nous avons le concept d'héritage qui crée un couplage étroit entre la sous - classe et sa superclasse alors que modèle de conception délégation constitue une alternative pour éviter ce couplage serré à l' aide que nous pouvons créer une relation beaucoup plus souple basée sur les objets délégués anonymes.
Mise en œuvre des protocoles et du mécanisme de délégation.
Supposons que vous ayez deux vues ViewA et ViewB
L'instance de ViewB est créée dans ViewA , de sorte que ViewA puisse envoyer un message à ViewB's instance ViewB's , mais pour que l'inverse se produise, nous devons implémenter la délégation (de sorte que l'utilisation de ViewB's instance de délégué ViewB's puisse envoyer un message à ViewA )
Suivez ces étapes pour implémenter la délégation
Dans
ViewBcréez le protocole en tant que@protocol ViewBDelegate -(void) exampleDelegateMethod; @endDéclarez le délégué dans la classe d'expéditeur
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @endAdoptez le protocole en classe ViewA
@interfac ViewA: UIView < ViewBDelegate >Définir le délégué
-(void) anyFunction { // create Class ViewB's instance and set the delegate [viewB setDelegate:self]; }Implémenter la méthode delegate dans la classe
ViewA-(void) exampleDelegateMethod { // will be called by Class ViewB's instance }Utilisez la méthode dans la classe
ViewBpour appeler la méthode déléguée en tant que-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }