標籤:實踐 manager 格式 它的 架構 網路請求 get 方法 ken
先展示實現的如下:
此樣本展示用的是MVVM結構形式,表述如下
M:資料Model的儲存,可以用來對屬性進行處理。(即胖model概念,中xx萬人訂閱這個處理方法寫在Model內)
V: View。用來統一管理控制項初始化與布局。
VM:viewModel。負責網路請求及其他計算或事件處理
目錄結構如下:
viewController檔案夾下有一個控制器和一個MLDataView,這個view添加在控制器self.view上,然後這個控制器中其他view的初始化,添加和布局都在這個MLDataView裡進行,這樣把View分離整合到了一起。
MLDataViewModel裡負責了網路請求,tableView代理和資料來源方法的實現,及其他一些事件邏輯的封裝。傳統MVC一般這些代碼都是放在控制器內,現在這樣大量減少了控制器的代碼。
MLDataModel裡儲存傳輸的資料,它也可以用來處理一些格式化的資料。如
這樣model也可以分擔一些屬性的格式化處理。
整體架構上的一些其他封裝:
1.自訂MLHTTPSessionManager繼承自AFHTTPSessionManager,可以在自訂的類裡優雅地處理要求標頭,回應標頭或https設定相關的一些資訊
2.網路請求擴充性強:自己公司的網路請求實現檔案裡邏輯要多得多,包括Token失效,重新整理RefreshToken,網路請求錯誤碼的攔截等。這些業務都可以根據自己的需要加入。
3.MLCustomHud彈出toast提示。實用性非常強。
4.Base檔案夾下有兩個類,其實企業及項目基本都會建立基類,也就是所以view都可以有一個基類,如tableView,UIlabel,UIButton,WKWebView,UITableViewCell等等,然後可以在基類中建立一些快捷方法設定屬性等。
5.Category檔案夾下Unicode裡的代碼為了實現nslog無法輸出中文的問題。
6.Category下UIView+HudCount分類,用runTime對view進行引用計數。它的專屬優勢在於防止多個網路請求同時發生時對Loading框產生幹擾,即可防止loading框重疊或提前消失。
最後附上demo地址:
碼雲:https://gitee.com/LiJinShi/MVVM_Demo
gitHub:https://github.com/LiJinShi/MVVM_Demo
ios MVVM實踐 重新整理網路請求+tableView展示資料