iOS MVC架構(gòu)介紹

iOS MVC架構(gòu)介紹

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。
MVC是一個(gè)框架模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。

基本概念:

  • 視圖(View):構(gòu)建UI的類;例如:按鈕,標(biāo)簽,進(jìn)度條等。
  • 模型(Model):視圖類所需要的數(shù)據(jù);例如:表格需要顯示的文字。
  • 控制器(Controller):連接視圖類和模型類,任務(wù)是使數(shù)據(jù)顯示在屏幕上。

通信方式

  • 控制器可以直接訪問模型:將模型直接作為控制器的屬性。
  • 控制器可以直接訪問視圖:將視圖直接作為控制器的屬性。
  • 模型與視圖無法直接訪問對方:二者完全解耦,不能引用對方,把對方設(shè)置為屬性。
  • 視圖到控制器的通信:
    • 目標(biāo)動作機(jī)制(target - action):用戶與視圖交互觸發(fā)控制器的方法。例如:點(diǎn)擊按鈕后實(shí)現(xiàn)視界面跳轉(zhuǎn),網(wǎng)絡(luò)請求,刷新UI等。
    • 委托機(jī)制(delegate):視圖向控制器詢問某些自己無法決定的事情,或是讓控制器幫助自己做一些自己獨(dú)立無法完成的事情。 因?yàn)榭刂破鞑攀钦莆杖值慕巧?,很多時(shí)候視圖是無法自己做決定的。例如:表格問控制器:我可以滾動么?然后控制器給予回答告知是否可以繼續(xù)滾動。 如果表格的高度很小,那么就可以不讓它滾動。但是如果表格的高度已經(jīng)超過了屏幕的高度,這時(shí)候如果讓它自作主張無法滾動久不好了。
    • 數(shù)據(jù)源機(jī)制(dataSource):視圖讓控制器給它將要顯示的數(shù)據(jù)。例如:音樂的數(shù)據(jù)存在于模型里,控制器訪問模型,從模型里拿到數(shù)據(jù)后告訴視圖如何顯示出歌曲。
  • 模型到控制器的通信
    • 廣播機(jī)制(Notification):控制器注冊監(jiān)聽某模型數(shù)據(jù)變化的廣播頻道,當(dāng)此模型數(shù)據(jù)變化后向該控制器發(fā)送廣播,告知模型變化情況。
    • KVO機(jī)制(Key-Value Observing):模型作為控制器的屬性,當(dāng)模型屬性被修改后,持有此模型屬性的控制器就會收到通知。
iOS MVC架構(gòu)

借鑒 上天眷顧我 原文地址

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

相關(guān)閱讀更多精彩內(nèi)容

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