Dopo aver sfogliato i documenti Apple, ho trovato questo esempio del pattern MVC:
UsandoNSNotificationCenteresenzausareKVO,questodiagrammaquisottorappresentaunacorrettaimplementazionedelpatternMVC?Incasocontrario,cosac'èchenonvaecomepuòesserecorrettoomigliorato?
- L'app inizia con la luce sinistra impostata su on e quella destra su off. Può essere accesa una sola luce alla volta.
- Gli utenti premono il pulsante destro, che invia un'azione di destinazione al controller della vista.
- Il controller della vista riceve il messaggio e invia un messaggio al giusto modello di dati chiari.
- La luce giusta utilizza NSNotificationCenter per notificare al controller che la luce giusta è cambiata.
-
Il controller riceve il messaggio ed esegue il seguente metodo
BOOL rightLightOn = [rightLightData on]; if( rightLightOn ) { [rightLightImage setImage:onImage]; [leftLightSwitch setOn:NO]; } else { [rightLightImage setImage:offImage]; }
-
La modifica dell'interruttore fa in modo che l'UISwitch richiami il metodo "leftSwitchChanged" nel controller.
- Il controller riceve il messaggio e invia un messaggio al modello di dati a luce sinistra.
- La luce a sinistra utilizza NSNotificationCenter per notificare al controller che la luce sinistra è cambiata.
- Il controller riceve il messaggio e di nuovo esegue lo stesso metodo mostrato sopra, ma modificato per la luce giusta.
Inoltre, cosa succede se il sistema non utilizzava uno switch e utilizzava un UIButton che visualizzava il testo, "Attiva" o "Disattiva". Lo switch aggiornava il proprio testo, quindi chiama "rightSwitchChanged" "O chiamerebbe rightSwitchChanged immediatamente e attendi che il controller della vista cambi il testo?