Quando si sviluppa un app in ios (e anche android) la maggior parte delle volte si segue il
design pattern MVC. MVC sta per Model View Controller. Il model è tutto il codice che ti permette di accedere ai dati che poi vuoi visualizzare. Nel controller ci va tutta la logica che magari rielabora questi dati da visualizzare nella view, che è dove vengono visualizzati i dati (per intenderci uno xib) e ci sono tutte le logiche che hanno a che fare con l' interfaccia.
Di default xcode ti crea il ViewController, che nasce come controller di una determinata view e ti permette di creare anche lo xib associato. In realtà però conviene scindere le cose per mantenere il model, la view e il controller separati ed indipendenti. Anche perchè per la view spesso non basta avere lo xib, tocca scrivere del codice.
Nella maggior parte degli esempi che trovi sul web, il ViewController non è altro che un unico sorgente contentente sia il codice per la view che quello del controller. Io però per una questione di ordine e anche per una questione di riusabilità del codice, preferisco scindere il tutto ed avere il model in un file, la view in un altro e il controller in un altro ancora.
Fino a qualche tempo fa io lavoravo come tutti, poi però confrontandomi con chi ne sa più di me, sono giunto alla conclusione che avere un ViewController contenente anche le logiche della view mi sa molto di accozzaglia di codice buttato così alla ca**o di cane in un sorgente.
Comunque leggiti il pattern su wiki, quello che ti ho linkato. Non sono molto bravo a spiegarmi, li si capisce bene. Questa è roba che prescinde da iOs e Objective C. E' un pattern che viene utilizzato in maniera massiccia nello sviluppo mobile e web.