1 前言
在IOS的Cocoa Touch提供的成千上萬個類中,大多數可以分為三類,而且其中的對象之間都有簡單和明确的互動方式。每個IOS應用程式都使用了一個簡單的設計模式:模型-視圖-控制器。簡稱MVC,今天我們就來學習一下IOS中的這個模式。
2 詳述
2.1 設計模式圖:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyM0MzN1UTMxEjNwYDMzEDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
2.2 三層介紹
2.2.1 視圖層(View)
IOS應用螢幕上出現的控件,如按鈕,滾動清單等,統稱為View。視圖知道如何展現資料,有些視圖還知道如何響應使用者輸入,例如UITextField。
在很多應用中我們還要建立自己的視圖用于顯示資料,比圖顯示股票表的标準控件,在IOS中是沒有提供的,我們需要拿出自己的解決方案。為應用建立獨一無二的樣子,但是都要基于UIView和UIController類來實作我們自己的視圖。
2.2.2 模型層(Model)
Model是應用程式的核心和靈魂,因為他負責管理資料。與視圖不同,模型不了解使用者目前執行的動作或者目前螢幕上顯示的内容,其唯一的功能是操作和處理在應用程式中的使用者資料。通常提供這些基本行為提供内部邏輯實作。
例如從Intet上下載下傳股票資料的應用程式,需要使用模型對象來存儲曆史價格。
有些模型對象可以跨應用程式工作,如聯系人和使用者預設設定的資料庫。還有一些其他的模型,如股票應用程式所用的模型,是專屬某個應用的。
在建立自己的模型時候常會用到Cocoa Touch内部實作的類,如:NSArray和NSDictionary類将資料存儲到有序表或者哈希表中。此外還有NSURLConnection和NSData這樣的類可以從網際網路擷取和存儲資料。
最後可以使用Core Data架構來操作SQLite資料庫(存儲和檢索對象)。
2.2.3 控制器層(Controller)
Controller要複雜一些,他充當着視圖和模型的中介,在模型中的資料變化時,負責更新視圖。同樣控制器會知道有使用者輸入,并相應的更新模型資料。
2.3 舉例MVC工作流程
(1) 使用者點選按鈕重新整理視圖,動作被發送到控制器。
(2) 控制器接着讓模型去加載新的資料。
(3) 模型打開一個網絡連接配接并開始下載下傳資料。
(4) 在資料加載完成後,模型會通知控制器新的資料已經準備好了。
(5) 控制器傳送行的資料到視圖中,使用者看到更新後的結果。
2.4 MVC好處
模型和視圖不直接互動,降低耦合度,減少依賴。
控制器對象往往負責初始化任務。模型和視圖在某些時候必須加載和初始化,控制器的核心角色使其成為了這項工作的必然選擇。
UIViewController類及其幾個子類主要負責執行這些基本的功能。這幾個類是在開始學習其他類之前必須要掌握的。
3 結語
以上是所有内容,希望對大家有所幫助。