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)