參考文章來自objcio網站
爲什麼要編寫輕量級的View Controller??
1、作爲iOS項目中最大的文件,ViewControllers中的代碼複用率幾乎是最低的
2、重量級的View COntroller加大了測試的複雜度。
所以關注ViewController的瘦身,把業務邏輯、網絡請求、Views的代碼移到合適的地方,進而提高代碼可讀性、降低耦合、提高複用、降低測試難度極爲重要
一、把DataSource和其他Protocols分離出來
比如uiTableView中的DataSource大多都是對數組做的一些操作,可以把數組操作相關的代碼移到單獨的類中。可以使用block或者delegate來設置一個cell。
二、把業務邏輯、網絡請求邏輯移動到Model中
業務邏輯類的代碼要放到Model對象中。但是對於不能輕易移動到Model對象中,但是和Model代碼相關的,我們可以創建一個Store類
Store被稱爲服務層或者倉庫,主要關心的是數據加載、緩存和設計數據棧
網絡請求邏輯也要移動到Model層中,不要在ViewController中做網絡請求的邏輯。你應該把網絡請求封裝到一個類中。這樣你的ViewController就可以在之後通過回調函數來請求網絡了。
三、把View代碼移到View層
不要在ViewController中構建複雜的view層次結構。可以把views封裝到UIView的子類中。對代碼的重用和測試都帶來很大的幫助。
補充
1、ViewController主要做的事情是與其他關聯的ViewController、Model、View之間進行通信。
2、ViewController和Model對象之間的消息傳遞可以使用KVO、fetched results Controller。
3、當一個ViewController需要把某個狀態傳遞給其他多個ViewController時,可以使用代理模式處理。