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

來源:互聯網
上載者:User

標籤:

模型-視圖-控制器(Model-View-Controller,MVC)是Xerox PARC在20世紀80年代為程式設計語言Smalltalk-80發明的一種軟體設計模式,至今已廣泛應用於使用者互動應用程式中。在iOS開發中MVC的機制被使用的淋漓盡致,充分理解iOSMVC模式,有助於我們程式的組織合理性。


模型對象
模型對象封裝了應用程式的資料,並定義操控和處理該資料的邏輯和運算。例如,模型對象可能是表示遊戲中的角色或地址簿中的連絡人。使用者在視圖層中所進行的建立或修改資料的操作,通過控制器對象傳達出去,最終會建立或更新模型對象。模型對象更改時(例如通過網路連接接收到新資料),它通知控制器對象,控制器對象更新相應的視圖對象。
視圖對象
視圖對象是應用程式中使用者可以看見的對象。視圖對象知道如何將自己繪製出來,並可能對使用者的操作作出響應。視圖對象的主要目的,就是顯示來自應用程式模型對象的資料,並使該資料可被編輯。儘管如此,在 MVC 應用程式中,視圖對象通常與模型對象分離。

在iOS應用程式開發中,所有的控制項、視窗等都繼承自 UIView,對應MVC中的V。UIView及其子類主要負責UI的實現,而UIView所產生的事件都可以採用委託的方式,交給UIViewController實現。
控制器對象
在應用程式的一個或多個視圖對象和一個或多個模型對象之間,控制器對象充當媒介。控制器對象因此是同步管道程式,通過它,視圖對象瞭解模型對象的更改,反之亦然。控制器對象還可以為應用程式執行設定和協調任務,並管理其他對象的生命週期。

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

對於不同的UIView,有相應的UIViewController,對應MVC中的C。例如在iOS上常用的UITableView,它所對應的Controller就是UITableViewController。

  1. Model和View永遠不能相互連信,只能通過Controller傳遞。
  2. Controller可以直接與Model對話(讀寫調用Model),Model通過Notification和KVO機制與Controller間接通訊。
  3. Controller可以直接與View對話,通過outlet,直接操作View,outlet直接對應到View中的控制項,View通過action向Controller報告事件的發生(如使用者Touch我了)。Controller是View的直接資料來源(資料很可能是Controller從Model中取得並經過加工了)。Controller是View的代理(delegate),以同步View與Controller。

 

C對M:API
C對V:Outlet
V對C:Target-action, Delegate,Datasource
M對C:Notification,KVO

有關“模型-視圖-控制器”的完整資訊,請參閱 Concepts in Objective-C Programming(Objective-C 編程中的概念)中的:Model-View-Controller

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.