歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 理解iOS的應用程序的MVC架構模式

理解iOS的應用程序的MVC架構模式

日期:2017/3/1 10:02:15   编辑:Linux編程

在iOS系統上運行的應用程序遵守MVC的軟件架構模式,將自己分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。
MVC,維基百科是這樣定義的。
MVC模式最早由Trygve Reenskaug在1974年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程序語言Smalltalk發明的一種軟件設計模式。MVC模式的目的是實現一種動態的程序設計,使後續對程序的修改和擴展簡化,並且使程序某一部分的重復利用成為可能。除此之外,此模式通過對復雜度的簡化,使程序結構更加直觀。軟件系統通過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。專業人員可以通過自身的專長分組:
(控制器Controller)- 負責轉發請求,對請求進行處理。
(視圖View) - 界面設計人員進行圖形界面設計。
(模型Model) - 程序員編寫程序應有的功能(實現算法等等)、數據庫專家進行數據管理和數據庫設計(可以實現具體的功能)。

在iOS的應用程序中,MVC架構模式將應用程序的屏幕對象的外觀和行為區分開來。屏幕上的對象如按鈕,本身沒有任何內在含義,它能實現的所有操作都是通過視圖控制器來實現的。視圖控制器是橋梁,將用戶操作和應用程序中的目標方法聯系起來,目標方法又讀取和保存數據到應用程序中的某個數據模型裡。
這是一個極其簡單的iOS應用程序的架構模式。在MVC中,視圖控制器的角色看成控制器,但也能看成是視圖,因為它是控制視圖顯示的重要組成部分。

一、視圖(View)

在iOS應用程序創建時,所使用的視圖組件是由UIView 類的子類及與其相關的UIViewController類提供,它們分別負責定義和放置屏幕元素。UIViewController類不是MVC 模式中的控制器角色,這點和命名略有出入,就理解成這是控制視圖的一個類。它負責對屏幕的各項元素進行布局。
但是,每個UIViewController子類都實現了自己的loadView方法。該方法對視圖控制器的所屬視圖進行布局,並建立所有的觸發、回調和委托。從這個角度看,它又算一個控制器。
因此,咱們理解即可,靈活使用,不必糾纏於某些條條框框,否則反而限制了自己。

二、控制器(Controller)


在iOS應用程序中,控制器的行為通過這三個技術來實現,分別是委托、目標操作和通知。

1、目標操作(target action)

它是重定向用戶交互的一種較低級的方式,基本上只有在實現UIControl類的子類時,我們會遇到它們。

例如,在應用的視圖界面上有一個按鈕,"touch up inside",就是將執行target配置的對象和action配置的方法。
視圖控制器類的代碼是這樣的:
UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];
self.navigationItem.rightBarButtonItem = barListBtn;
[barListBtn release];
代碼中定義的action是@selector(getTruckStopListAction),定義的target是視圖控制器類本身即self。
在視圖控制器類中應該有一個已實現的getTruckStopListAction方法,按鈕"touch up inside"時觸發的就是這個方法。這個方法可以看著是MVC架構模式中的控制器角色,它的定義代碼可以按照需求隨時修改。

這就是target-action模式。

如果target不是self,而是其他的類,那麼在其他的類要實現這個action所配置的方法。這個類就是一個純種的MVC架構模式的控制器。不像現在和視圖控制器類參雜在一起,搞得不知道視圖控制器類算MVC架構模式的控制器還是MVC架構模式的視圖。(注,這段純粹是個人猜測,不一定正確。)

蘋果文檔對於target-action 模式的定義如下:

Target-action is a design pattern in which an object holds the information necessary to send a message to another object when an event occurs. The stored information consists of two items of data: an action selector, which identifies the method to be invoked, and a target, which is the object to receive the message. The message sent when the event occurs is called an action message. Although the target can be any object, even a framework object, it is typically a custom controller that handles the action message in an application-specific way.

Copyright © Linux教程網 All Rights Reserved