11

Siempre pensé que entendía MVC, pero últimamente, después de leer muchas publicaciones de Stack Overflow sobre el tema, descubrí que las formas en que los frameworks MVC hacen las cosas son ligeramente diferentes entre sí. Más específicamente, en la forma en que la vista y el modelo interactúan, parece que hay dos escuelas de pensamiento:MVC en Cocoa Touch: ¿Cómo interactúan la vista y el modelo?

  1. Cuando el usuario interactúa con la vista, la vista notifica al controlador, y el controlador a su vez hace algo para el modelo. Cuando el modelo cambia, el modelo notifica al controlador, que a su vez actualiza la vista.

  2. La vista suscribe al modelo. Cuando el modelo cambia, la vista parece ser notificada directamente de que necesita actualizarse.

enter image description here

Así que mi pregunta es: En Cocoa Touch (iOS), ¿cuál es la mejor manera de hacerlo MVC? Actualmente estoy codificando para iOS y me interesan las mejores prácticas solo para esta plataforma. (No estoy interesado en cómo ASP.NET, rieles, Backbone, etc hacer las cosas.)

Sería maravilloso si se podría proporcionar algo de código KVO ejemplo. Gracias. =)

Respuesta

3

He encontrado que la mejor teoría básica sobre la materia que se enseña en la Universidad de Stanford por un maestro de gran talento llamado Paul Haggarty. Recomiendo buscar este curso en iTunes U: hay 18 conferencias en video HD y archivos ppt para aprender. Aquí hay un enlace al sitio web del curso: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

Recuerdo que revisa la parte MVC del material de forma rápida pero completa, dejando esto muy claro. Además, tendría que decir que la escuela de pensamiento n. ° 1 es con la que estoy más de acuerdo.

1

En mi experiencia, (1) debería usarse en la mayoría de los casos.

En (2), como la vista no es propietaria del modelo, siempre debe pasar los cambios del modelo a vista para representar y si una vista puede actualizarse desde varios modelos, debe escribir un código separado para ese .

En (1), el método para actualizar la vista del controlador podría ser utilizada por múltiples modelos, el controlador hace referencia a los modelos de este modo no es necesario para aprobar cualquier información de la notificación.

En cuanto al rendimiento no sé si hay alguna diferente, pero el código en (1) sería mucho más claro.

5

de Apple advocates use of the first method, creo.

es la versión modificada del modelo estándar MVC (el segundo enfoque), donde modelo y la vista están totalmente separados. Personalmente, creo que es más limpio y más extensible.

  1. La lógica está centralizada en el controlador.
  2. No es necesario escribir vistas personalizadas para gestionar eventos del modelo. Normalmente, escribiría un controlador personalizado pero usaría las clases de vista dadas por el SDK. Siguiendo el segundo método, puede que tenga que crear una vista personalizada solo para manejar eventos del modelo.
Cuestiones relacionadas