Le Model peut-il parler au Controller?

Publié le 28 décembre 2011 par Deviphonepro

thématiques: developpement iphone, model vers controller, comprendre mvc, utiliser model, notification, key value observing
 
Le Model peut-il directement parler à son Controller?

La réponse est évidente : c’est non, non et non!
Le Model est indépendant à l’UI. Il ne sait absolument rien de ses vues ou de son interface utilisateur, il ne peut donc parler à son Controller, car le job du Controller est de gérer l’UI.

Mais que se passe-t-il si quelque chose change dans le Model et que vous voulez mettre à jour le Controller?

Par exemple, vous avez une base de données et quelqu’un d’autre ajoute/supprime des données de la base de données, vous avez un jeu de vaisseau dans l’espace en réseau, un autre joueur tire sur votre vaisseau.
Le Model a donc changé puisque votre vaisseau à reçu des dégâts.
La façon de faire en iOS fonctionne comme une station radio, un mécanisme de diffusion d’informations, qui sont en réalité 2: Notification et Key Value Observing.

Ce qui se passe, c’est que dès que quelque chose change, le model diffuse sur une station radio que le Controller écoute, et il entend : “Oh, quelque chose a changé, il faut que je demande au Model qu’est-ce qui a changé”.
On peut donc dire que c’est un moyen de communiquer complètement aveugle, c’est en quelque sorte asynchrone.
Tout se déroule dans la partie principale de l’application mais c’est principalement asynchrone.

Cette Notification Key Value Observing peut aussi se produire entre la View et le Controller mais elle ne se produira jamais entre le Model et la View.
La view n’écoutera jamais la station radio diffusée par le Model.
mots-clefs: notification, key value observing, comprendre mvc, utiliser model,developpement iphone, model vers controller