搭建基于MVC架構(gòu)的iOS輕量級框架

描述

對于做開發(fā)的我們不知道對框架的重要性理解的有多深。我先談?wù)勎业母惺?。我最近因為某些原因換工作,接手了一個別人寫的項目,于是地獄般的生活開始了。我大概說一下接手項目的幾點讓我無法忍受的點。

  • 沒有代碼規(guī)范,寫的隨心所欲,想空幾個空格就空幾個,想空幾個空格就空幾個空格。
  • 沒有架構(gòu)的概念,修改代碼找不到對應(yīng)的代碼寫在哪里。
  • 基本的MVC的架構(gòu)模式都不成型,沒有model的概念,全是NSDictionary漫天飛,數(shù)據(jù)傳遞一條一條的傳。
  • table 的 cell 不復(fù)用,UI直接寫在cellforRow的方法中,直接add到cell上,構(gòu)建的cell里面空空如也。
  • 平均每個VC里面的代碼得有2k+,維護(hù)特別不方便,代碼很難定位。

大概就列這幾條其他的就不再吐槽了,首先我想說的是這樣的代碼誰接手了能受得了。于是我就決定在開發(fā)至于從新搭建一個框架。一方面是自己算是學(xué)習(xí)成長了,另一方面也把項目重新構(gòu)建了。

好了回歸正題,首先說一下MVC架構(gòu)吧,這個我覺得的大家都知道,老生常談的問題了我就不贅述了。有不是很清楚的小伙伴可以點上面的鏈接了解一下。

接下來我們說一下基于MVC搭建框架相關(guān)的東東。這是我參考別的文章中的架構(gòu)圖搭建的項目。

架構(gòu)圖:

架構(gòu)設(shè)計圖

架構(gòu)原則:易讀性、易維護(hù)性、易擴(kuò)展性。

搭建目錄結(jié)構(gòu)

目錄結(jié)構(gòu)

目錄如圖,從上到下這樣搭建App的目錄結(jié)構(gòu)。用pod管理第三方的框架,部分進(jìn)行封裝,應(yīng)對項目中的需求。降低耦合度并且節(jié)省了手動配置引入各種庫的麻煩。

文件詳解:

AppDelegate

1、AppDelegate是應(yīng)用的代理,應(yīng)用級的事件都委托它處理,包含啟動退出、推送等事件,初始化,以及IM、支付等第三方的回調(diào),這使得AppDelegate內(nèi)代碼龐大,錯綜復(fù)雜,十分不利于閱讀和維護(hù),因此新增一個AppDelegate+AppService類別,用來處理生命周期之外的業(yè)務(wù),AppDelegate作為事件入口,具體實現(xiàn)直接調(diào)用類別里的方法,為AppDelegate減負(fù)。

功能模塊

2、我搭建的這個是分為首頁、科普、消息、我的四個模塊。每個模塊是按著MVC的架構(gòu)搭建的,Resource是用來存儲當(dāng)前模塊中需要用到的資源。Other是用來存儲一些其他的資源,如果你想做分散是網(wǎng)絡(luò)請求的話就將這文件夾改名為Service。然后將網(wǎng)絡(luò)請求的文件放在這里。
Manager

3、Manager的定義是全局基礎(chǔ)服務(wù),通常使用類方法或者單例來實現(xiàn),主要包含對應(yīng)用、用戶的管理和服務(wù),例如網(wǎng)絡(luò)狀態(tài)監(jiān)聽,廣告頁應(yīng)用介紹頁,統(tǒng)計單例等;用戶快速登錄退出操作以及登錄狀態(tài)的獲取等。
Utils

4、Utils文件夾內(nèi)主要包含全局通用工具,來源于對三方框架的二次封裝,或是自己寫的工具類。
Base

5、Base文件夾用來存放項目的基類,基類作用包含一些定制化的內(nèi)容,例如頁面樣式,空數(shù)據(jù)頁面等,使用基類來實現(xiàn),可以統(tǒng)一控制,利于維護(hù),減少冗余。有寫不需要的可以刪除掉。
ThridParty

6、放一些第三方的類庫,有一些pod中沒有的。或者自己自己封裝的類,還有的需要我們手動修改里面源碼來滿足項目需求的類。
Define

7、項目中通用的全局宏定義,我暫時定義了四個可以根據(jù)需求添加。
UtilsMacros:通用的工具宏,如:屏幕的寬高,版本的判斷,機(jī)型的判斷,計算nav,tab,statusBar的高度等。
URLMacros:關(guān)于項目中接口的宏,正式環(huán)境,測試環(huán)境的域名,還有個接口的路徑。方便統(tǒng)一管理和維護(hù)。
FontAndColorMacros:項目中常用的字號,色值,顏色的十六進(jìn)制轉(zhuǎn)換等,字體的自重定義。
KeyMacros:第三方庫的key,和一些通用的關(guān)鍵key,通知的key。
Resource

8、資源文件,系統(tǒng)中通用的一些資源可放在這個文件夾中。但是icon的資源要放在Assets中管理。因為這里面可以對相應(yīng)的icon做一寫處理,比如:設(shè)置圖片的縮放,可重復(fù)復(fù)制的區(qū)域等。就是 Show SlicingShow OverView
,不了解這塊的可以點擊直通車??。

Pods

9、CocoaPods是iOS項目的依賴管理工具,開發(fā)的一般都知道這個我就不過多贅述了。

總結(jié)

項目中還有好多細(xì)節(jié)的內(nèi)容沒有填好后期會不斷的完善,大家有啥意見可以盡情的提出來必虛心接受。也可以推薦好用的庫給我哦。另外說一下YYKit是非常好用且全面的組件庫,遇到問題先去里面找一找,也許會有驚喜哦。后期我會上傳demo。歡迎start。

參考文章

http://www.itdecent.cn/p/d553096914ff

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容