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
ViewB
créez le protocole en tant que@protocol ViewBDelegate -(void) exampleDelegateMethod; @end
Déclarez le délégué dans la classe d'expéditeur
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @end
Adoptez 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
ViewB
pour appeler la méthode déléguée en tant que-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }