Sök…


Anmärkningar

Protokoll och delegater är två relaterade men olika begrepp:

Ett protokoll är ett gränssnitt en klass kan uppfylla, vilket innebär att klassen implementerar de listade metoderna.

En delegat är vanligtvis ett anonymt objekt som överensstämmer med ett protokoll.

Tillämpningen av delegat som kallas delegation är ett designmönster.

I ena änden har vi begreppet ärft som skapar en tät koppling mellan underklassen och dess superklass medan Delegations designmönster ger ett alternativ att undvika denna täta koppling med vilket vi kan skapa ett mycket lösare förhållande baserat på anonyma delegerade objekt.

Implementering av protokoll och delegeringsmekanism.

Anta att du har två vyer ViewA och ViewB

Instansen av ViewB skapas i ViewA , så ViewA kan skicka meddelande till ViewB's instans, men för att det omvända ska hända måste vi implementera delegering (så att använda delegat ViewB's instans kan skicka meddelande till ViewA )

Följ dessa steg för att genomföra delegationen

  1. ViewB protokoll i ViewB som

     @protocol ViewBDelegate 
    
    -(void) exampleDelegateMethod;
    
     @end
    
  2. Förklara delegaten i avsändarklassen

     @interface ViewB : UIView
     @property (nonatomic, weak) id< ViewBDelegate > delegate;
     @end
    
  3. Anta protokollet i Class ViewA

    @interfac ViewA: UIView < ViewBDelegate >

  4. Ställ in delegaten

    -(void) anyFunction   
    {
        // create Class ViewB's instance and set the delegate
        [viewB setDelegate:self];
    }
    
  5. Implementera ViewA i klassen ViewA

    -(void) exampleDelegateMethod
    {
        // will be called by Class ViewB's instance
    }
    
  6. Använd metoden i klassen ViewB att kalla ViewB som

    -(void) callDelegateMethod
    {
        [delegate exampleDelegateMethod];
        //assuming the delegate is assigned otherwise error
    }
    


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow