Entriamo nel vivo della trattazione andando ad introdurre il Model-View-Controller design pattern (MVC) che rappresenta il design pattern più utilizzato nello sviluppo di applicazioni iOS. È necessario introdurre il design pattern MVC in quanto rappresenta uno dei concetti fondamentali della programmazione ad oggetti e permette di strutturare l'applicazione in maniera molto efficiente.
Nel design pattern MVC ogni singolo oggetto può ricoprire solo uno dei seguenti ruoli: modello, vista o controllore. Questi ruoli rappresentano una sorta di classificazione dell'oggetto che stiamo utilizzando che risultano dunque essere elementi logicamente separati ai quali però è consentita, ovviamente, una stretta comunicazione.
Dunque, per dare una definizione un po' più rigorosa, il pattern non solo stabilisce che ruolo deve avere un determinato oggetto all'interno dell'applicazione, ma anche il modo in cui gli oggetti comunicano tra di loro. Andiamo adesso a descrivere, in maniera più approfondita, i tre tipi di oggetti che il pattern definisce.
Modello
L'oggetto che ricopre il ruolo di modello è un oggetto contenente i dati specifici di un'applicazione e si occupa di definire tutti le varie procedure che effettuano la manipolazione dei dati stessi. Data la sua natura, un modello non dovrebbe avere nessun tipo di connessione diretta con un oggetto di tipo vista (che vedremo tra poco), in quanto il modello ha il compito di possedere solamente dei dati che però non devono essere legati ad un particolar tipo di visualizzazione.
Vista
Il ruolo principale di un oggetto vista è quello di presentare all'utente i dati contenuti all'interno di un modello. Dunque esiste subito una netta differenza concettuale tra modello e vista: il primo è un oggetto non concreto, mentre il secondo è un oggetto concreto e con il quale l'utente può interagire andando, per esempio, a modificare i dati contenuti. Quello che offre la vista è dunque una realizzazione di un oggetto non concreto e mette a disposizione un'interfaccia per la modifica dei dati contenuti nel modello. Dato che anche un oggetto di tipo vista non dovrebbe avere un riferimento esplicito ad un oggetto di tipo modello è necessario introdurre il terzo concetto di questo patter: l'oggetto controllore.
Controllore
L'oggetto che ricopre il ruolo di controllore svolge la funzione di intermediario tra oggetti di tipo vista ed oggetti di tipo modello. Il numero di relazioni tra un singolo controllore ed oggetti di tipo modelli e vista è arbitraria: può essere una relazione uno ad uno come una relazione molti a molti. Il controllore, data la sua natura di mediatore, si occuperà di inizializzare la vista con i dati contenenti nel modello, informare la vista che i dati all'interno del modello hanno subito modifiche e rendere le modifiche effettuate dall'utente (tramite la vista) permanenti all'interno del modello.