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
fonte
2012-06-19 19:04:07
Grazie per spiegare il mio primo numero. Ho aggiunto un esempio alla mia domanda. – RMDan
@ RMDan Ho aggiunto una spiegazione in più per la tua seconda domanda, spero che chiarisca un po 'le cose –
Questo ha perfettamente senso. Dovrò imparare di più sulla delega, ma sta iniziando a dare un senso. – RMDan