2009-11-24 20 views

risposta

6

Un delegato è un oggetto. Un metodo delegato è un metodo che è previsto l'implementazione dell'oggetto delegato. Alcuni metodi delegati sono richiesti, mentre altri no. In IOS, la maggior parte dei delegati dovrebbe conformarsi a un protocollo Objective-C; la dichiarazione del protocollo ti indicherà quali metodi sono opzionali e quali sono richiesti.

5

Un delegato è semplicemente un riferimento a un altro oggetto e un metodo delegato è un metodo del delegato.

A metodo delegato implementa il meccanismo di callback che di solito prende il mittente come uno dei parametri da chiamare.

42

È difficile da spiegare, ma un delegato esegue metodi per conto di un altro oggetto. Una vista tabella non sa cosa fare quando si seleziona un elemento nell'elenco. Invece, deve porre una domanda all'oggetto delegato, in particolare, didSelectRowAtIndexPath. Le uniche informazioni che il tableview conosce sono la sezione e la riga che l'utente ha toccato. Quindi la vista tabella fornisce queste informazioni all'oggetto delegato dicendo essenzialmente che "Ehi, l'utente ha toccato la riga 4 nella sezione 0. Fai qualcosa."

L'oggetto delegato trova il metodo didSelectRowAtIndexPath ed esegue il codice all'interno.

Esistono molti metodi Delegate per molti oggetti diversi. Ad esempio, l'oggetto Campo di testo non può fare nulla da solo. Invece, utilizza un delegato per eseguire azioni. Se si preme il tasto Invio sulla tastiera sullo schermo, il campo di testo chiede all'oggetto delegato di eseguire un metodo specifico, textFieldShouldReturn. Se il delegato impostato per il campo di testo non ha un metodo textFieldShouldReturn, il campo di testo non saprà cosa fare quando si preme il pulsante di invio.

Ha senso?

+1

Questo ha aiutato molto. Grazie mille! –

+0

Spiegazione davvero molto bella ... darò lo stesso esempio ai tirocinanti per spiegare il concetto di delegato .. –

+0

Ottima risposta ... – konyv12

0

Tutte le app iOS utilizzano la delega. Anche quelli di base. È già disponibile nel codice che ti danno. In altre lingue si usa qualcosa come l'ereditarietà.

Proprio come nel mondo reale un delegato rappresenta qualcuno/qualcosa o in questo caso un oggetto.

Prendere gli oggetti UI, ad esempio, hanno già i loro metodi per eseguire le attività. Ma possono essere collegati al tuo viewController (oggetto/classe personalizzata) e possono delegare una responsabilità al tuo oggetto (i).

Un paio di cose da ricordare:

  1. Tutto questo fatto usando i protocolli delegato.
  2. È una cosa volontaria. così i tuoi oggetti decidono di essere il delegato.
  3. Guardare il protocollo Delegato e implementare i metodi. Alcuni sono opzionali e alcuni sono obbligatori.
  4. Assicurarsi che l'oggetto delegante sia connesso all'oggetto.
+0

Sei così vicino, ma penso che la tua formulazione potrebbe usare un po 'di miglioramento. Penso che sarebbe meglio dire che i delegati sono usati per cose che l'oggetto stesso non può fare da solo. Dì UITableView, è una classe che gestisce e disegna una tabella, ma non può fare tutto da sola perché ha bisogno di un delegato per sapere quante righe disegnare, il contenuto di quelle file, ecc. –