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.

  1. En ViewB crear protocolo como

     @protocol ViewBDelegate 
    
    -(void) exampleDelegateMethod;
    
     @end
    
  2. Declarar al delegado en la clase de remitente.

     @interface ViewB : UIView
     @property (nonatomic, weak) id< ViewBDelegate > delegate;
     @end
    
  3. Adoptar el protocolo en Class ViewA.

    @interfac ViewA: UIView < ViewBDelegate >

  4. Establecer el delegado

    -(void) anyFunction   
    {
        // create Class ViewB's instance and set the delegate
        [viewB setDelegate:self];
    }
    
  5. Implementar el método delegado en la clase ViewA

    -(void) exampleDelegateMethod
    {
        // will be called by Class ViewB's instance
    }
    
  6. 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
    }
    


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow