Comment utiliser les delegates personnalisés dans Objective-C

J’ai besoin de connaître l’utilisation des méthodes de délégué dans Objective-C. Quelqu’un peut-il me diriger vers la bonne source?

Vous voudrez déclarer un protocole de délégué pour votre classe. Un exemple de protocole délégué et d’interface pour la classe Foo pourrait ressembler à ceci:

 @class Foo; @protocol FooDelegate  @optional - (BOOL)foo:(Foo *)foo willDoSomethingAnimated:(BOOL)flag; - (void)foo:(Foo *)foo didDoSomethingAnimated:(BOOL)flag; @end @interface Foo : NSObject { NSSsortingng *bar; id  delegate; } @property (nonatomic, retain) NSSsortingng *bar; @property (nonatomic, assign) id  delegate; - (void)someAction; @end 

N’oubliez pas de synthétiser vos propriétés dans la mise en œuvre.

Ce code a été déclaré un protocole appelé FooDelegate; une classe conforme à ce protocole serait déclarée comme @interface SomeClass : SuperClass {} . Étant donné que cette classe est conforme au protocole FooDelegate , elle permet maintenant d’implémenter les méthodes sous FooDelegate (pour exiger leur implémentation, utilisez @required au lieu de @optional ). La dernière étape consiste pour un object Foo à être instancié dans la classe conforme à FooDelegate , et pour que cet object Foo ait son jeu de propriétés délégué:

 Foo *obj = [[Foo alloc] init]; [obj setDelegate:self]; 

Votre classe est maintenant prête à recevoir des messages des objects Foo dont les delegates sont définis correctement.

Les delegates sont très utiles pour contrôler le transfert au sein du tableau des contrôleurs de vue dans l’application manuellement. En utilisant des delegates, vous pouvez très bien gérer le stream de contrôle.

Voici un petit exemple de propres delegates …

  1. Créez une classe de protocole …. (.h uniquement)

SampleDelegate.h

 #import @protocol SampleDelegate @optional #pragma Home Delegate -(NSSsortingng *)getViewName; @end 
  1. Importez au-dessus de la classe de protocole dans la classe dont vous voulez déléguer une autre classe. Ici dans mon ex. J’utilise AppDelegate pour déléguer l’object ObjectView.

Ajoutez également DelegateName ci-dessus dans la référence du délégué <>

ownDelegateAppDelegate.h

 #import "SampleDelegate.h" @interface ownDelegateAppDelegate : NSObject  { } 

ownDelegateAppDelegate.m

 //setDelegate of the HomeViewController's object as [homeViewControllerObject setDelegate:self]; //add this delegate method definition -(NSSsortingng *)getViewName { return @"Delegate Called"; } 

HomeViewController.h

 #import #import "SampleDelegate.h" @interface HomeViewController : UIViewController { iddelegate; } @property(readwrite , assign) iddelegate; @end 

HomeViewController.h

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; UILabel *lblTitle = [[UILabel alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; lblTitle.text = [delegate getViewName]; lblTitle.textAlignment = UITextAlignmentCenter; [self.view addSubview:lblTitle]; } 

Si le ou les objects en question ont leur delegate assigné à une classe que vous avez écrite, par exemple un controller les méthodes définies pour être les méthodes delegate la classe de cet object doivent être implémentées par la classe affectée. Cela vous permet de contrôler efficacement le comportement de l’object sans sous-classer la classe de l’object afin de remplacer le comportement qui nécessiterait probablement une certaine quantité de comportement de duplication. C’est l’une des parties les plus propres du design tactile cacao.

Ceci est quelque chose que vous devriez prendre dans les deux premières intros et tutoriels sur le cacao. Comme ce tutoriel de Cocoa est ma petite amie . En fait, ils ont fait de l’explication du delegate un gros titre audacieux.

Pour commencer, vous pouvez regarder ce que Apple a à dire sur les méthodes des delegates. La documentation fournit des informations bien écrites sur la délégation et explique comment utiliser les classes AppKit qui définissent et prennent en charge un délégué et comment coder le support des delegates dans l’un de vos propres objects.

Voir Communication avec des objects

(Si vous souhaitez coder le support de vos propres delegates, passez à la section «Implémentation d’un délégué pour un cours personnalisé»).

L’aspect le plus important des méthodes déléguées est qu’elles permettent de personnaliser et d’affecter le comportement d’un object sans qu’il soit nécessaire de le sous-classer.

J’espère que cela vous aidera à démarrer.