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

描述

對于做開發(fā)的我們不知道對框架的重要性理解的有多深摊沉。我先談?wù)勎业母惺艽V印N易罱驗(yàn)槟承┰驌Q工作恳蹲,接手了一個(gè)別人寫的項(xiàng)目,于是地獄般的生活開始了碰缔。我大概說一下接手項(xiàng)目的幾點(diǎn)讓我無法忍受的點(diǎn)账劲。

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

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

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

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

架構(gòu)圖:

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

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

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

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

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

文件詳解:

AppDelegate

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

功能模塊

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

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

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

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

6械馆、放一些第三方的類庫胖眷,有一些pod中沒有的∨椋或者自己自己封裝的類珊搀,還有的需要我們手動修改里面源碼來滿足項(xiàng)目需求的類。
Define

7尾菇、項(xiàng)目中通用的全局宏定義境析,我暫時(shí)定義了四個(gè)可以根據(jù)需求添加。
UtilsMacros:通用的工具宏派诬,如:屏幕的寬高劳淆,版本的判斷,機(jī)型的判斷默赂,計(jì)算nav沛鸵,tab,statusBar的高度等缆八。
URLMacros:關(guān)于項(xiàng)目中接口的宏曲掰,正式環(huán)境,測試環(huán)境的域名奈辰,還有個(gè)接口的路徑栏妖。方便統(tǒng)一管理和維護(hù)。
FontAndColorMacros:項(xiàng)目中常用的字號奖恰,色值吊趾,顏色的十六進(jìn)制轉(zhuǎn)換等,字體的自重定義瑟啃。
KeyMacros:第三方庫的key趾徽,和一些通用的關(guān)鍵key,通知的key翰守。
Resource

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

Pods

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

總結(jié)

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

參考文章

http://www.reibang.com/p/d553096914ff

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末首懈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谨敛,更是在濱河造成了極大的恐慌究履,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脸狸,死亡現(xiàn)場離奇詭異最仑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肥惭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來紊搪,“玉大人蜜葱,你說我怎么就攤上這事∫” “怎么了牵囤?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長滞伟。 經(jīng)常有香客問我揭鳞,道長,這世上最難降的妖魔是什么梆奈? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任野崇,我火速辦了婚禮,結(jié)果婚禮上亩钟,老公的妹妹穿的比我還像新娘乓梨。我一直安慰自己鳖轰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布扶镀。 她就那樣靜靜地躺著蕴侣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臭觉。 梳的紋絲不亂的頭發(fā)上昆雀,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音蝠筑,去河邊找鬼狞膘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛菱肖,可吹牛的內(nèi)容都是我干的客冈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼稳强,長吁一口氣:“原來是場噩夢啊……” “哼场仲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起退疫,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤渠缕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后褒繁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亦鳞,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年棒坏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了燕差。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坝冕,死狀恐怖徒探,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喂窟,我是刑警寧澤测暗,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站磨澡,受9級特大地震影響碗啄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稳摄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一稚字、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厦酬,春花似錦尉共、人聲如沸褒傅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殿托。三九已至,卻和暖如春剧蚣,著一層夾襖步出監(jiān)牢的瞬間支竹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工鸠按, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留礼搁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓目尖,卻偏偏與公主長得像馒吴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子瑟曲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348