2010-06-05 9 views

risposta

14

Un delegato è un oggetto che di solito reagisce a qualche evento in un altro oggetto e/o può influire sul comportamento di un altro oggetto. Gli oggetti lavorano insieme per il bene di completare un compito. In genere un oggetto delegato sarà condiviso da molti altri oggetti che hanno un'attività più specifica da eseguire. Il delegato stesso sarà più astratto e dovrebbe essere molto riutilizzabile per diversi compiti. L'oggetto che contiene il delegato in genere invia al delegato un messaggio quando si verifica un evento innescato, dando al delegato l'opportunità di svolgere l'attività specificata.

C'è più documentazione here da leggere per comprendere lo schema dei delegati nel tocco Cocoa e Cocoa, in particolare con la modalità di utilizzo della delega tra UIWindow e UIView. È un modello di progettazione integrale nell'architettura di iPhone e uno che dovrebbe essere padroneggiato se si desidera progettare un'applicazione pulita.

+2

il link è morto – lindenrovio

+0

un altro link utile qui - [link] (https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html) –

3

Delegation is a pattern e il termine indica lo stesso in Cocoa.

Un delegato non è implementato in a UIViewController. Diversi tipi di controller di visualizzazione sono assign ed un delegato per gestire determinate attività. Uno dei migliori esempi (se stiamo parlando di iPhone) è lo UITableViewDelegate, che è chiamato a fare certe cose quando si verificano determinati eventi relativi alla tabella.

5

I delegati sono utilizzati per delegare compiti di oggetti al proprietario (o qualsiasi oggetto, in realtà). Una buona ragione per questo è che rende più facile usare la composizione invece dell'ereditarietà. I delegati sono un riferimento a un oggetto conforme a un protocollo specificato, pertanto è possibile garantire che implementerà i metodi richiesti. Un buon esempio è UIApplicationDelegate. Nota come i metodi delegati (dal protocollo) usano verbi che applicationDid, applicationShould, applicationWill ecc. In genere delegano i metodi o chiedono il permesso di fare qualcosa (e scelgono di farlo in questo modo, in un metodo, piuttosto che con solo una proprietà BOOL , per maggiore flessibilità) o notificare al delegato un evento che si verificherà o è accaduto.

0

Il concetto di delega è molto comune in iOS. Un oggetto si affiderà spesso a un altro oggetto per aiutarlo con determinate attività. Questa separazione delle preoccupazioni mantiene il sistema semplice poiché ogni oggetto fa solo ciò che è buono e lascia che gli altri oggetti si occupino del resto. La vista tabella offre un ottimo esempio di questo.

1

Un delegato viene utilizzato per comunicare/passare dati in bianco e nero due oggetti di una classe/struttura per completare un'attività. Ad esempio: considerare firstVC (mittente o delegato o CEO) che invia dati riservati a secondVC (ricevente o delegato o segretario). Questo viene fatto facendo secondVC conforme a un

protocol passDataDelegate { func passdata(data: String) } 

class secondVC : UIViewController, passDataDelegate { 
func passdata(data: String) { 
    print("CEO passed //(data)") 
    } 
} 

class firstVC : UIViewController { 
    var delegate : passDataDelegate? 
} 

Ora creare oggetti di entrambi firstVC & secondVC

let sender = firstVC() 
let receiver = secondVC() 

Dal momento che, il ricevitore è conforme al protocollo passDataDelegate. Quindi, sta digitando o come UIViewController o passDataDelegate perché se una classe è conforme a un protocollo allora l'oggetto della sua classe può avere il protocollo come tipo.

Quindi, assegnare sender.delegate = receiver

Ora, siamo in grado di CEO (mittente) in grado di trasmettere i dati al Segretario (ricevitore) tramite la proprietà delegato come

sender.delegate?.passdata("Confidential data") 

Output: CEO passed Confidential data 

Ora il segretario (ricevitore) in grado di utilizzare tali dati per completare il suo ulteriore compito.

Problemi correlati