Objective-C Language
Protocolos y Delegados.
Buscar..
Observaciones
Protocolos y delegados son dos conceptos relacionados pero diferentes:
Un protocolo es una interfaz que una clase puede cumplir, lo que significa que la clase implementa los métodos enumerados.
Un delegado suele ser un objeto anónimo que se ajusta a un protocolo.
La aplicación del Delegado llamado Delegación es un patrón de diseño.
En un extremo, tenemos el concepto de herencia, que crea un acoplamiento estrecho entre la subclase y su superclase, mientras que el patrón de diseño de Delegación proporciona una alternativa para evitar este acoplamiento estrecho mediante el cual podemos crear una relación mucho más flexible basada en objetos Delegados anónimos.
Implementación de Protocolos y mecanismo de Delegación.
Supongamos que tiene dos vistas ViewA
y ViewB
La instancia de ViewB
se crea dentro de ViewA
, por lo que ViewA
puede enviar un mensaje a ViewB's
instancia ViewB's
, pero para que ocurra lo contrario, necesitamos implementar una delegación (de modo que el uso de ViewB's
instancia delegada de ViewB's
pueda enviar un mensaje a ViewA
)
Siga estos pasos para implementar la delegación.
En
ViewB
crear protocolo como@protocol ViewBDelegate -(void) exampleDelegateMethod; @end
Declarar al delegado en la clase de remitente.
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @end
Adoptar el protocolo en Class ViewA.
@interfac ViewA: UIView < ViewBDelegate >
Establecer el delegado
-(void) anyFunction { // create Class ViewB's instance and set the delegate [viewB setDelegate:self]; }
Implementar el método delegado en la clase
ViewA
-(void) exampleDelegateMethod { // will be called by Class ViewB's instance }
Utilice el método en la clase
ViewB
para llamar al método delegado como-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }