2010-07-24 15 views
5

Sono un nuovo programmatore iPhoneperché e dove utilizzare un delegato in C obiettivo

ho creato alcune piccole vedute senza delegati .... Se un programma può essere eseguito senza un delegato, allora perché utilizzarli . Quello che è necessario per loro, ho visto alcuni programmi in rete con delegati.

Sono confuso, per favore rispondi.

+0

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 –

+0

Vedere anche http://stackoverflow.com/questions/1349706/little-confused-on-delegates-in-objective-c –

risposta

10

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.

+0

grazie molto mch – Saawan