2012-06-19 5 views
5

ho imparato sulla delega e origini dati per la programmazione iOS e bisogno di chiedere, c'è qualche differenza che è necessario fare quando si effettua un protocollo di origine dei dati di un protocollo di delegato?delegazione e Dati di origine iOS

anche come posso implementare un delegato per molti stessi oggetti in un delegato? Esempio di un oggetto con molti avvisi personalizzati unici.

--Edit--

Un esempio per la seconda parte:

Un oggetto che ha quattro differenti avvisi ciascuna con diversi pulsanti. Poiché l'oggetto deve dettare il modo in cui ciascun pulsante funziona in qualità di delegato per gli avvisi. Come impostare i metodi dei delegati per determinare ciascun avviso?

risposta

14

Entrambi i tipi di oggetti più o meno si comportano allo stesso modo, si tratta di una questione di quello che fanno questo è il problema.

Un oggetto di tipo delegato risponde alle azioni eseguite da un altro oggetto. Ad esempio, il protocollo UITableViewDelegate ha metodi come didSelectRowAtIndexPath per eseguire azioni su un utente che seleziona una particolare riga in una tabella.

Mentre un oggetto di tipo origine dati fornisce dati a un altro oggetto. Ad esempio, il protocollo UITableViewDataSource ha metodi come cellForRowAtIndexPath e numberOfRowsInSection che dettano ciò che dovrebbe essere visualizzato nella tabella.

Non c'è differenza duro tra i due in termini di compilazione, si tratta semplicemente di uno stile di codifica per rendere quali oggetti fare quello molto chiaro per l'utente del codice.

EDIT:

Per rispondere alla tua seconda domanda: se si desidera che ogni avviso di rispondere in modo diverso, è necessario scrivere un delegato diverso per ciascun avviso. Ad esempio, se uno dei vostri avvisi è un avviso di conferma del salvataggio (forse si sta per sovrascrivere un file, e si apre per confermare questo è ciò che l'utente vorrebbe fare), si avrebbe un oggetto come:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate> 
@end 

E nello @implementation per SaveConfirmAlertDelegate si implementa la funzione di salvataggio corretta in base al pulsante premuto dall'utente nell'avviso.

Quando si crea una vista avviso, si specifica ciò che l'oggetto delegato dovrebbe essere, questo non deve essere self. Potresti avere i tuoi quattro delegati memorizzati come oggetti diversi e impostarli sugli avvisi, se necessario.

Spero che questo cancella le cose

+0

Grazie per spiegare il mio primo numero. Ho aggiunto un esempio alla mia domanda. – RMDan

+0

@ RMDan Ho aggiunto una spiegazione in più per la tua seconda domanda, spero che chiarisca un po 'le cose –

+0

Questo ha perfettamente senso. Dovrò imparare di più sulla delega, ma sta iniziando a dare un senso. – RMDan