iOS MVC架構介紹
iOS MVC架構介紹
MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫。
MVC是一個框架模式,它強制性的使應用程式的輸入、處理和輸出分開。
基本概念:
- 檢視(View):構建UI的類;例如:按鈕,標籤,進度條等。
- 模型(Model):檢視類所需要的資料;例如:表格需要顯示的文字。
- 控制器(Controller):連線檢視類和模型類,任務是使資料顯示在螢幕上。
通訊方式
- 控制器可以直接訪問模型:將模型直接作為控制器的屬性。
- 控制器可以直接訪問檢視:將檢視直接作為控制器的屬性。
- 模型與檢視無法直接訪問對方:二者完全解耦,不能引用對方,把對方設定為屬性。
- 檢視到控制器的通訊:
- 目標動作機制(target - action):使用者與檢視互動觸發控制器的方法。例如:點選按鈕後實現視介面跳轉,網路請求,重新整理UI等。
- 委託機制(delegate):檢視向控制器詢問某些自己無法決定的事情,或是讓控制器幫助自己做一些自己獨立無法完成的事情。 因為控制器才是掌握全域性的角色,很多時候檢視是無法自己做決定的。例如:表格問控制器:我可以滾動麼?然後控制器給予回答告知是否可以繼續滾動。 如果表格的高度很小,那麼就可以不讓它滾動。但是如果表格的高度已經超過了螢幕的高度,這時候如果讓它自作主張無法滾動久不好了。
- 資料來源機制(dataSource):檢視讓控制器給它將要顯示的資料。例如:音樂的資料存在於模型裡,控制器訪問模型,從模型裡拿到資料後告訴檢視如何顯示出歌曲。
- 模型到控制器的通訊
- 廣播機制(Notification):控制器註冊監聽某模型資料變化的廣播頻道,當此模型資料變化後向該控制器傳送廣播,告知模型變化情況。
- KVO機制(Key-Value Observing):模型作為控制器的屬性,當模型屬性被修改後,持有此模型屬性的控制器就會收到通知。
相關文章
- Orchard架構介紹架構
- OpenTelemetry架構介紹架構
- LNMP架構介紹LNMP架構
- iOS 架構模式–解密 MVC,MVP,MVVM以及VIPER架構iOS架構模式解密MVCMVPMVVM
- iOS 開發(二) MVC 架構篇iOSMVC架構
- iOS混合開發庫(GICXMLLayout)二、功能、架構介紹iOSXML架構
- LAMP架構介紹、MYSQL介紹、安裝LAMP架構MySql
- mvc架構MVC架構
- nginx介紹(二) 架構篇Nginx架構
- KAFKA介紹(分散式架構)Kafka分散式架構
- LNMP架構介紹與部署LNMP架構
- Kubernetes架構介紹架構
- Pixhawk系統架構介紹架構
- RAG系統架構介紹架構
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- iOS架構淺談從 MVC、MVP 到 MVVMiOS架構MVCMVPMVVM
- iOS架構入門 - MVC模式例項演示iOS架構MVC模式
- Nginx 架構——【核心流程+模組介紹】Nginx架構
- 介紹基於事件的架構事件架構
- TiDB整體架構介紹TiDB架構
- 理解索引:HBase介紹和架構索引架構
- [譯]iOS架構模式——解密MVC、MVP、MVVM和VIPERiOS架構模式解密MVCMVPMVVM
- LAMP架構(LAMP介紹,mysql/mariaDB介紹,Mysql安裝)LAMP架構MySql
- Flume架構以及應用介紹[轉]架構
- Restlet - REST架構風格的介紹REST架構
- 分散式快取GemFire架構介紹分散式快取架構
- Android的Camera架構介紹Android架構
- Kafka剖析:Kafka背景及架構介紹Kafka架構
- UML 架構圖入門介紹 starUML架構
- iOS架構設計:揭祕MVC, MVP, MVVM以及VIPERiOS架構MVCMVPMVVM
- ASP.NET MVC 介紹ASP.NETMVC
- GoldenGate 12.3 MA架構介紹系列(4)–Restful API介紹Go架構RESTAPI
- GoldenGate 12.3 MA架構介紹系列(3) - 各功能模組介紹Go架構
- iOS VIPER架構實踐(一):從MVC到MVVM到VIPERiOS架構MVCMVVM
- 接入層Nginx架構及模組介紹分享Nginx架構
- 崑崙分散式資料庫架構介紹分散式資料庫架構
- NUMA架構介紹及優缺點分析架構
- Kafka剖析(一):Kafka背景及架構介紹Kafka架構