Objective-C Language
Protocollen en afgevaardigden
Zoeken…
Opmerkingen
Protocollen en gedelegeerden zijn twee verwant maar verschillend concept:
Een protocol is een interface waaraan een klasse kan voldoen, wat betekent dat klasse de vermelde methoden implementeert.
Een gemachtigde is meestal een anoniem object dat voldoet aan een protocol.
De toepassing van Delegate genaamd Delegation is een ontwerppatroon.
Aan de ene kant hebben we het concept van overerving dat een nauwe koppeling tussen de subklasse en de superklasse creëert, terwijl het ontwerppatroon van de delegatie een alternatief biedt om deze nauwe koppeling te voorkomen, waardoor we een veel lossere relatie kunnen creëren op basis van anonieme gedelegeerde objecten.
Implementatie van protocollen en delegatiemechanismen.
Stel dat u twee weergaven ViewA
en ViewB
Exemplaar van ViewB
wordt in ViewA
, zodat ViewA
een bericht naar ViewB's
instantie van ViewA
kan verzenden, maar andersom moeten we delegatie implementeren (zodat het gebruik van ViewB's
instantie van ViewA
een bericht naar ViewA
kon verzenden)
Volg deze stappen om de delegatie te implementeren
Maak in
ViewB
protocol als@protocol ViewBDelegate -(void) exampleDelegateMethod; @end
Verklaar de afgevaardigde in de afzenderklasse
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @end
Gebruik het protocol in Class ViewA
@interfac ViewA: UIView < ViewBDelegate >
Stel de gemachtigde in
-(void) anyFunction { // create Class ViewB's instance and set the delegate [viewB setDelegate:self]; }
Implementeer de delegate-methode in de klasse
ViewA
-(void) exampleDelegateMethod { // will be called by Class ViewB's instance }
Gebruik de methode in de klasse
ViewB
om de gedelegeerde methode als aan te roepen-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }