Pregunta

Tengo una aplicación de iPhone que básicamente está recibiendo información de un API (en XML, JSON, pero tal vez con el tiempo). Los objetos de resultado típicamente se muestran en los controladores de vista (tablas principalmente).

Esta es la arquitectura en este momento.

Tengo clases NSOperation el que buscar a los diferentes objetos desde el servidor remoto. Cada una de estas clases NSOperation, tendrá un método delegado a medida que devolver el fuego los objetos resultantes a medida que se analizan, y luego, finalmente, un método cuando hay otros resultados están disponibles. Por lo tanto, el protocolo para los delegados será algo como:

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

Creo que la solución funciona bien, pero yo no terminar con un montón de protocolos de delegado alrededor y luego mis controladores de vista que poner en práctica todos estos métodos de delegado. Yo no creo que es tan malo, pero siempre estoy en la búsqueda de un mejor diseño.

Por lo tanto, estoy pensando en usar NSNotifications para eliminar el uso de los delegados. Podría incluir el objeto en la parte userInfo de la notificación y se limite a publicar como objetos recibidos y, a continuación, un evento final, cuando ya no están disponibles. Entonces podría sólo hay un método en cada controlador de vista de recibir todos los datos, incluso cuando se utilizan varios objetos en un controlador. †

Así, alguien puede compartir conmigo algunas ventajas / desventajas de cada método. ¿Debería considerar refactorización mi código para utilizar los eventos en lugar de los delegados? Es uno mejor que el otro en ciertas situaciones? En mi escenario realmente no estoy buscando para recibir notificaciones en múltiples lugares, así que tal vez los delegados a base de protocolo son el camino a seguir.

Gracias!

¿Fue útil?

Solución

En realidad, el diseño de sonido sonidos. El enfoque de cacao claro está usando delegados, y es mucho más preferido a lanzar objetos alrededor. Además, la definición de sus protocolos de esta manera hace que su código muy explícito y fácil de entender. En definitiva: mantener el buen trabajo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top