2012-07-21 16 views
5

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.htmlmodelo IOS objeto de capa notifica controlador

En el enlace de arriba, veo lo siguiente en lo que respecta a la forma en la capa del modelo debe comunicarse con el ViewController.

"Cuando un objeto modelo cambia (por ejemplo, se reciben datos nuevos a través de una conexión de red), notifica a un objeto controlador, que actualiza los objetos de vista apropiados."

Mi pregunta es, ¿cómo notifica el objeto modelo al objeto Controller? ¿De qué manera se puede hacer esto? Mi capa de modelo obtiene la ubicación del usuario y luego llama a un servicio web. ¿Cómo debo notificar al objeto del controlador cuando se descargan esos datos?

Gracias

Respuesta

4

Hay varias maneras de hacer esto, dependiendo de su caso específico. En general, utilizaría una implementación de protocolo/delegado, observación de valor de clave o notificaciones. Hay una muy buena descripción here.

Editar: Pensamiento

debo añadir, como el comentario a esta respuesta se ha mencionado: el uso de bloques de devolución de llamada es también una opción muy sólida, dependiendo de sus necesidades. Hay muchos factores de decisión posibles sobre qué soluciones son mejores para qué casos, pero aquí hay un esquema general que sigo.

Si se garantiza que solo necesita un observador a la vez: generalmente uso bloques o delegados. Mi preferencia personal es que uso bloques si solo hay uno o dos devoluciones de llamada porque aquí es donde brillan, pero utilizo protocolos de delegado si hay más de unos pocos métodos posibles.

Si necesita varios observadores, utilizo las notificaciones a través de NSNotificationCenter.

Uso Key-Value-Observing cuando solo necesito observar propiedades específicas en una instancia, en lugar de eventos.

+3

No se olvide de los bloques;) – Ecarrion

Cuestiones relacionadas