Objective-C Language
Protocolli e delegati
Ricerca…
Osservazioni
Protocolli e delegati sono due concetti correlati ma diversi:
Un protocollo è un'interfaccia a cui una classe può conformarsi, il che significa che la classe implementa i metodi elencati.
Un delegato è in genere un oggetto anonimo conforme a un protocollo.
L'applicazione di Delegato chiamata Delegazione è un modello di progettazione.
Da una parte abbiamo il concetto di Eredità che crea un accoppiamento stretto tra la sottoclasse e la sua superclasse mentre il modello di progettazione della Delegazione fornisce un'alternativa per evitare questo stretto accoppiamento usando il quale possiamo creare una relazione molto più libera basata su oggetti Delegati anonimi.
Implementazione di protocolli e meccanismo di delega.
Supponiamo di avere due viste ViewA
e ViewB
L'istanza di ViewB
viene creata all'interno di ViewA
, quindi ViewA
può inviare un messaggio ViewB's
, ma per il contrario deve essere implementata la delega (in modo che ViewB's
istanza di delegato ViewB's
possa inviare un messaggio a ViewA
)
Seguire questi passaggi per implementare la delega
In
ViewB
crea il protocollo come@protocol ViewBDelegate -(void) exampleDelegateMethod; @end
Dichiarare il delegato nella classe mittente
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @end
Adotta il protocollo in Class ViewA
@interfac ViewA: UIView < ViewBDelegate >
Imposta il delegato
-(void) anyFunction { // create Class ViewB's instance and set the delegate [viewB setDelegate:self]; }
Implementare il metodo delegate nella classe
ViewA
-(void) exampleDelegateMethod { // will be called by Class ViewB's instance }
Utilizzare il metodo nella classe
ViewB
per chiamare il metodo delegate come-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }