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

  1. Dans ViewB créez le protocole en tant que

     @protocol ViewBDelegate 
    
    -(void) exampleDelegateMethod;
    
     @end
    
  2. Déclarez le délégué dans la classe d'expéditeur

     @interface ViewB : UIView
     @property (nonatomic, weak) id< ViewBDelegate > delegate;
     @end
    
  3. Adoptez le protocole en classe ViewA

    @interfac ViewA: UIView < ViewBDelegate >

  4. Définir le délégué

    -(void) anyFunction   
    {
        // create Class ViewB's instance and set the delegate
        [viewB setDelegate:self];
    }
    
  5. Implémenter la méthode delegate dans la classe ViewA

    -(void) exampleDelegateMethod
    {
        // will be called by Class ViewB's instance
    }
    
  6. Utilisez la méthode dans la classe ViewB pour appeler la méthode déléguée en tant que

    -(void) callDelegateMethod
    {
        [delegate exampleDelegateMethod];
        //assuming the delegate is assigned otherwise error
    }
    


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow