11

Ho sempre pensato di aver capito MVC, ma ultimamente, dopo aver letto molti post di Stack Overflow sull'argomento, ho scoperto che i modi in cui i framework MVC fanno le cose sono leggermente diversi l'uno dall'altro. Più specificamente, nel modo in cui la vista e modello interagiscono, sembra esserci due scuole di pensiero:MVC in Cocoa Touch: come interagiscono la vista e il modello?

  1. Quando l'utente interagisce con la vista, la vista avvisa il controllore e il controllore a sua volta fa qualcosa al modello. Quando il modello cambia, il modello notifica al controller, che a sua volta aggiorna la vista.

  2. La vista si abbona al modello. Quando il modello cambia, la vista sembra essere avvertita direttamente che deve aggiornarsi.

enter image description here

Quindi la mia domanda è: In Cocoa Touch (iOS), qual è il modo migliore per farlo MVC? Attualmente sto codificando per iOS in questi giorni e sono interessato alle migliori pratiche solo per questa piattaforma. (Io non sono interessato a come ASP.NET, Rails, spina dorsale, ecc fare le cose.)

Sarebbe meraviglioso se potrebbe essere fornito un codice KVO esempio. Grazie. =)

risposta

3

Ho scoperto che la migliore teoria di base in materia è insegnata nella Stanford University da un insegnante di grande talento di nome Paul Haggarty. Ti consiglio di guardare questo corso su iTunes U - ci sono 18 lezioni in video HD e file ppt da cui imparare. Ecco un link al sito web del corso: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

Mi ricordo che passa attraverso la parte MVC del materiale molto rapidamente ma a fondo, rendendo questo problema molto chiaro. Inoltre, dovrei dire che la scuola di pensiero n. 1 è quella con cui sono più d'accordo.

1

Nella mia esperienza, (1) dovrebbe essere usato nella maggior parte dei casi.

In (2), poiché view non possiede il modello, è sempre necessario passare le modifiche dal modello per visualizzare il rendering e se una vista può essere aggiornata da più modelli, è necessario scrivere un codice separato per quello .

In (1), il metodo per aggiornare la vista dal controller può essere utilizzato da più modelli, il controller fa riferimento ai modelli, quindi non è necessario passare alcuna informazione nella notifica.

Prestazioni non so se c'è qualche differenza ma il codice in (1) sarebbe molto più chiaro.

5

Apple advocates use of the first method, credo.

È la versione modificata del modello MVC standard (il secondo approccio), in cui il modello e la vista sono completamente separati. Personalmente penso che sia più pulito e più estensibile.

  1. La logica è centralizzata nel controller.
  2. Non è necessario scrivere viste personalizzate per gestire gli eventi dal modello. Normalmente dovresti scrivere un controller personalizzato ma utilizzare le classi di visualizzazione fornite dall'SDK. Seguendo il secondo metodo, potrebbe essere necessario creare una vista personalizzata solo per gestire gli eventi dal modello.
Problemi correlati