iOS開發之理解iOS中的MVC設計模式

2021-07-13 04:26:32 字數 1229 閱讀 4897

模型-檢視-控制器(model-view-controller,mvc)是xerox parc在20世紀80年代為程式語言smalltalk-80發明的一種軟體設計模式,至今已廣泛應用於使用者互動應用程式中。在ios開發中mvc的機制被使用的淋漓盡致,充分理解ios的mvc模式,有助於我們程式的組織合理性。

模型物件封裝了應用程式的資料,並定義操控和處理該資料的邏輯和運算。例如,模型物件可能是表示遊戲中的角色或位址簿中的聯絡人。使用者在檢視層中所進行的建立或修改資料的操作,通過控制器物件傳達出去,最終會建立或更新模型物件。模型物件更改時(例如通過網路連線接收到新資料),它通知控制器物件,控制器物件更新相應的檢視物件。

檢視物件是應用程式中使用者可以看見的物件。檢視物件知道如何將自己繪製出來,並可能對使用者的操作作出響應。檢視物件的主要目的,就是顯示來自應用程式模型物件的資料,並使該資料可被編輯。儘管如此,在 mvc 應用程式中,檢視物件通常與模型物件分離。

在ios應用程式開發中,所有的控制項、視窗等都繼承自 uiview,對應mvc中的v。uiview及其子類主要負責ui的實現,而uiview所產生的事件都可以採用委託的方式,交給uiviewcontroller實現。

在應用程式的乙個或多個檢視物件和乙個或多個模型物件之間,控制器物件充當媒介。控制器物件因此是同步管道程式,通過它,檢視物件了解模型物件的更改,反之亦然。控制器物件還可以為應用程式執行設定和協調任務,並管理其他物件的生命週期。

控制器物件解釋在檢視物件中進行的使用者操作,並將新的或更改過的資料傳達給模型物件。模型物件更改時,乙個控制器物件會將新的模型資料傳達給檢視物件,以便檢視物件可以顯示它。

對於不同的uiview,有相應的uiviewcontroller,對應mvc中的c。例如在ios上常用的uitableview,它所對應的controller就是uitableviewcontroller。

model和view永遠不能相互通訊,只能通過controller傳遞。

controller可以直接與model對話(讀寫呼叫model),model通過notification和kvo機制與controller間接通訊。

controller可以直接與view對話,通過outlet,直接操作view,outlet直接對應到view中的控制項,view通過action向controller報告事件的發生(如使用者touch我了)。controller是view的直接資料來源(資料很可能是controller從model中取得並經過加工了)。controller是view的**(delegate),以同步view與controller。

iOS開發之理解iOS中的MVC設計模式

模型 檢視 控制器 model view controller,mvc 是xerox parc在20世紀80年代為程式語言smalltalk 80發明的一種軟體設計模式,至今已廣泛應用於使用者互動應用程式中。在ios開發中mvc的機制被使用的淋漓盡致,充分理解ios的mvc模式,有助於我們程式的組織...

iOS開發之理解iOS中的MVC設計模式

模型 檢視 控制器 model view controller,mvc 是xerox parc在20世紀80年代為程式語言smalltalk 80發明的一種軟體設計模式,至今已廣泛應用於使用者互動應用程式中。在ios開發中mvc的機制被使用的淋漓盡致,充分理解ios的mvc模式,有助於我們程式的組織...

iOS開發之理解iOS中的MVC設計模式

模型 檢視 控制器 model view controller,mvc 是xerox parc在20世紀80年代為程式語言smalltalk 80發明的一種軟體設計模式,至今已廣泛應用於使用者互動應用程式中。在 ios開發中 mvc的機制被使用的淋漓盡致,充分理解 ios的 mvc模式,有助於我們程...