View代碼結(jié)構(gòu)的規(guī)定
1.提高業(yè)務(wù)方View層的可讀性可維護(hù)性
2.防止業(yè)務(wù)代碼對架構(gòu)產(chǎn)生腐蝕
3.確保傳承
4.保持架構(gòu)發(fā)展的方向不輕易被不合理的意見所左右
ViewController的代碼應(yīng)該差不多是這樣:
要點(diǎn)如下:
所有的屬性都使用getter和setter
而不是這樣:
先是life cycle翩瓜,然后是Delegate方法實(shí)現(xiàn)聊品,然后是event response腌歉,然后才是getters and setters舍肠。這樣后來者閱讀代碼時就能省力很多。
1.每一個delegate都把對應(yīng)的protocol名字帶上砖第,delegate方法不要到處亂寫抹估,寫到一塊區(qū)域里面去
2.event response專門開一個代碼區(qū)域较幌,所有button、gestureRecognizer的響應(yīng)事件都放在這個區(qū)域里面少欺,不要到處亂放喳瓣。
3.關(guān)于private methods,正常情況下ViewController里面不應(yīng)該寫赞别。這個private methods一般是用于日期換算畏陕、圖片裁剪啥的這種小功能。這種小功能要么把它寫成一個category仿滔,要么把他做成一個模塊惠毁,哪怕這個模塊只有一個函數(shù)也行。
MVC
UIViewController中自帶的那個view崎页,它的主要任務(wù)就是作為一個容器鞠绰,我也覺得蘋果做的這個選擇是非常正確明智的。Controller可以因?yàn)椴煌录漠a(chǎn)生去很方便地更改容器內(nèi)容飒焦,比如加載失敗時蜈膨,把容器內(nèi)容換成失敗頁面的View,無網(wǎng)絡(luò)時,把容器頁面換成無網(wǎng)絡(luò)的View等等翁巍。
在iOS開發(fā)領(lǐng)域中驴一,怎樣才算是MVC劃分的正確姿勢?
M應(yīng)該做的事:
1.給ViewController提供數(shù)據(jù)
2.給ViewController存儲數(shù)據(jù)提供接口
3.提供經(jīng)過抽象的業(yè)務(wù)基本組件曙咽,供Controller調(diào)度
C應(yīng)該做的事:
1.管理View Container的生命周期
2.負(fù)責(zé)生成所有的View實(shí)例蛔趴,并放入View Container
3.監(jiān)聽來自View與業(yè)務(wù)有關(guān)的事件,通過與Model的合作例朱,來完成對應(yīng)事件的業(yè)務(wù)孝情。
V應(yīng)該做的事:
1.響應(yīng)與業(yè)務(wù)無關(guān)的事件,并因此引發(fā)動畫效果洒嗤,點(diǎn)擊反饋(如果合適的話箫荡,盡量還是放在View去做)等。
2.界面元素表達(dá)