Objective-C Language
Protokolle und Delegierte
Suche…
Bemerkungen
Protokolle und Delegierte sind zwei verwandte, aber unterschiedliche Konzepte:
Ein Protokoll ist eine Schnittstelle, der eine Klasse entsprechen kann. Das bedeutet, dass die Klasse die aufgelisteten Methoden implementiert.
Ein Delegat ist normalerweise ein anonymes Objekt, das einem Protokoll entspricht.
Die Anwendung von Delegat namens Delegation ist ein Entwurfsmuster.
An einem Ende haben wir das Konzept der Vererbung , das eine enge Kopplung zwischen der Unterklasse und ihrer Oberklasse herstellt, während das Delegierungsentwurfsmuster eine Alternative darstellt, um diese enge Kopplung zu vermeiden, mit der wir eine viel lockerere Beziehung auf Basis anonymer Delegate- Objekte erstellen können.
Implementierung von Protokollen und Delegierungsmechanismus.
Angenommen, Sie haben zwei Ansichten, ViewA
und ViewB
Die ViewB
Instanz wird in ViewB
erstellt. In ViewA
ViewA
kann ViewA
eine Nachricht an die ViewB's
Instanz senden. ViewB's
dies zu tun, müssen Sie jedoch die Delegierung implementieren (damit die ViewB's
Instanz mit ViewB's
Instanz die Nachricht an ViewA
senden ViewA
Führen Sie die folgenden Schritte aus, um die Delegierung zu implementieren
In
ViewB
erstellen Sie das Protokoll als@protocol ViewBDelegate -(void) exampleDelegateMethod; @end
Deklarieren Sie den Delegierten in der Senderklasse
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @end
Übernehmen Sie das Protokoll in Class ViewA
@interfac ViewA: UIView < ViewBDelegate >
Stellen Sie den Delegierten ein
-(void) anyFunction { // create Class ViewB's instance and set the delegate [viewB setDelegate:self]; }
Implementieren Sie die Delegat-Methode in der Klasse
ViewA
-(void) exampleDelegateMethod { // will be called by Class ViewB's instance }
Verwenden Sie die Methode in der Klasse
ViewB
, um die Delegate-Methode als aufzurufen-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }