I delegati sono uno schema che consente ad alcuni oggetti di notificare un altro oggetto quando succede. Un sacco di metodi delegati iniziano con "will" o "did", che vengono richiamati prima e dopo che si verifica un evento, rispettivamente.
Supponiamo di avere un UITableView
e si desidera sapere quando l'utente tocca una cella in modo da poter elaborare la propria scelta. Assegnare un delegato alla vista tabella che implementa il metodo delegato tableView:didSelectRowAtIndexPath:
.
Il bello di questo approccio è che la vista tabella non deve sapere o preoccuparsi di ciò che questo altro oggetto delegato è o come funziona. Permette all'oggetto di generare gli eventi di rimanere concentrato e pulito, occupandosi solo del proprio stato. Quando fa qualcosa degno di nota, invierà un messaggio al suo delegato. E l'oggetto delegato non ha bisogno di sapere nulla sullo stato interno dell'altro oggetto. Ha solo bisogno di sapere che ha fatto qualcosa di importante.
E questo si adatta perfettamente all'approccio Model/View/Controller (MVC) dell'iPhone SDK. La vista dovrebbe preoccuparsi solo di come viene visualizzata, e il controller è un delegato della vista per quando le cose cambiano.
La programmazione con i delegati non è una funzione lingua richiesta Objective-C. È semplicemente un modello di design che l'SDK usa un po '. Ma è un modello abbastanza buono che può aiutare a mantenere il codice più pulito.
fonte
2010-07-24 08:47:19
Potenzialmente correlati a http://stackoverflow.com/questions/3183146/what-do-mean-by-delegate-in-iphone-application e http://stackoverflow.com/questions/645449/how-to- use-custom-delegates-in-objective-c –
Vedere anche http://stackoverflow.com/questions/1349706/little-confused-on-delegates-in-objective-c –