Domanda

Ho un'applicazione iPhone che fondamentalmente sta ottenendo informazioni da un API (in XML, JSON ma forse alla fine). Gli oggetti risultato sono tipicamente visualizzati in controller di vista (tabelle principalmente).

Questa è l'architettura in questo momento.

Ho classi NSOperation che recuperano i diversi oggetti dal server remoto. Ognuna di queste classi NSOperation, avrà un metodo delegato personalizzato che al fuoco gli oggetti risultanti come sono analizzati, e poi finalmente un metodo quando sono altri risultati sono disponibili. Così, il protocollo per i delegati sarà qualcosa di simile:

(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;

Penso che la soluzione funziona bene, ma io non finire con un gruppo di protocolli di delegare in giro e poi i miei controller di vista necessario implementare tutti questi metodi delegato. Non penso proprio così male, ma io sono sempre alla ricerca di un design migliore.

Quindi, sto pensando di usare NSNotifications per eliminare l'uso dei delegati. Ho potuto includere l'oggetto nella parte userInfo della notifica e solo post oggetti come ricevute, e poi un evento finale quando nessun altro ancora sono disponibili. Poi ho potuto solo avere un metodo in ogni controller immagine per ricevere tutti i dati, anche quando si utilizzano più oggetti in un unico controllore. †

Quindi, possono condividere qualcuno con me alcuni vantaggi / svantaggi di ciascun approccio. Devo considerare il refactoring mio codice per utilizzare gli eventi piuttosto che i delegati? È uno meglio allora l'altro in certe situazioni? Nel mio scenario sto davvero non cercando di ricevere le notifiche in più luoghi, così forse i delegati protocollo basato sono la strada da percorrere.

Grazie!

È stato utile?

Soluzione

In realtà, il vostro disegno suoni suono. L'approccio Cocoa chiaro utilizza delegati, ed è molto preferito per gettare oggetti intorno. Inoltre, la definizione di protocolli di questo modo rende il codice molto esplicito e facile da capire. Tutto sommato: mantenere il buon lavoro

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top