成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析iPhone MVC設計模式要點

移動開發 iOS
MVC架構是"模型-視圖-控制器",MVC應用程序也是由這三個部分組成。Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Models的數據或者屬性,所有依賴的View都會自動更新。類似的,只要Controller改變了View,View會從潛在的Model中獲取數據來刷新自己。

接觸iphone的編程,就要從安裝、架構、模式等一些知識來填充自己的編程習慣,那么本文就是講述的這些。

一、概念

MVC架構是一個復雜的架構,其實現也顯得非常復雜。但是,我們已經總結出了很多可靠的設計模式,多種設計模式結合在一起,使MVC架構的實現變得相對簡單易行。Views可以看作一棵樹,顯然可以用Composite Pattern來實現。Views和Models之間的關系可以用Observer Pattern體現。Controller控制Views的顯示,可以用Strategy Pattern實現。Model通常是一個調停者,可采用Mediator Pattern來實現。現在讓我們來了解一下MVC三個部分在J2EE架構中處于什么位置,這樣有助于我們理解MVC架構的實現。MVC與J2EE架構的對應關系是:View處于Web Tier或者說是Client Tier,通常是JSP/Servlet,即頁面顯示部分。Controller也處于Web Tier,通常用Servlet來實現,即頁面顯示的邏輯部分實現。Model處于Middle

二、通信

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,delegate是一組協議,表示程序將要或者已經處于某種狀態時,來調整View,以對用戶有個交代。例如系統內存不足了,你是不是相應的降低view的質量以節省內存。

:突然冒出個delegate,讓人不好理解,其實他不對應xcode為我們創建的XXAppDelegate文件,此文件不屬于MVC中的任何一部分,雖然與MVC有聯系。我發現蘋果文檔里說A是B的代理的時候,通常是指A中有B的引用,可以A直接操作B。

三、實作

建立一個BtnClick工程系統,會為我們生成以下文件:

  1. BtnClickAppDelegate.h  
  2. BtnClickAppDelegate.m  

以上兩個文件定義了實現UIApplicationDelegate協議的類BtnClicAppDelegate,UIApplicationDelegate協議是系統預定義的協議,負責監視應用程序的高層行為,處理幾個關鍵系統消息,是應用程序生命周期為我們預留的Hook,每個iphone應用程序必不可少的。iphone應用程序的生命周期:

 

  1. BtnClickViewController.h  
  2. BtnClickViewController.m 

實現了MVC中的Controller.可以定義一些IBOutlet元素和IBAction方法與View通信。

  1. @interface BtnClickViewController : UIViewController{  
  2.     IBOutlet UILabel* statusText;  
  3. }  
  4. @property (retain,nonatomic) UILabel *statusText;  
  5. (IBAction)buttonPressed:(id)sender;  
  6. @end 

View對應那個文件呢? 答案是Resource下的MainWindow.xib和BtnClickViewController.xib。MainWindow.xib文件在在應用程序加載時是會被自動加載的,這其實是在plist文件中配置的。然后MainWindow.xib會加載子視圖BtnClickViewController.xib。

為什么會命名為ViewController,而不是分開命名?可能是因為View和Controller關系太緊密了,view就是Controller的跟班。實際編程時一定要分清MVC各部分的職責。自始至終沒見到Model的面,其實M是可選的,特別是對于簡單的應用。任何與界面無關的,我們添加的自定義類來定義我們應用程序的對象,都屬于Model的范疇。

【編輯推薦】

淺嘗iPhone中的MVC框架設計模式

詳解ASP.NET MVC 3中View的變化

iPhone游戲開發:使用到的工具和技術

ASP.NET MVC中很酷的jQuery驗證插件

詳解ASP.NET MVC 3新的Layout布局系統

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-04-22 09:26:57

MVC設計

2011-04-21 09:46:41

設計模式

2009-07-10 16:14:29

MVC設計模式Swing

2010-09-04 10:57:27

園區網絡

2012-05-09 10:09:18

JavaMEJava

2021-09-16 06:44:05

組合模式設計

2014-04-14 05:31:08

WindowsPhonWP8MVC

2009-12-10 13:43:08

使用PHPExcel

2011-07-18 16:51:51

Cocoa 單態 模式

2010-06-12 16:30:51

UML設計

2012-12-18 10:03:22

JavaScriptWebJS

2011-06-02 17:27:49

iphone 多線程

2010-06-17 15:54:24

UML總結

2024-05-30 12:27:42

Python代碼

2023-08-29 08:44:38

裝飾器組合模式

2011-08-02 18:07:03

iPhone 內省 Cocoa

2013-12-16 10:53:06

移動應用全屏模式

2011-07-29 15:09:48

iPhone Category

2010-01-28 13:50:03

Android移植

2011-09-16 11:23:10

布線布線系統線纜
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 情侣av| 久久久免费 | 三级免费 | 日韩毛片在线免费观看 | 四虎永久免费影院 | 在线观看视频91 | 久久成人综合 | 国产精品一区二区三区久久 | 黑人一级黄色大片 | 中文一区 | 久久免费大片 | 成人免费一区二区三区视频网站 | 91精品国产综合久久久动漫日韩 | 国产成人99av超碰超爽 | 99久久婷婷国产综合精品电影 | 免费黄色成人 | 久久精品久久久久久 | 91中文在线观看 | 久久99精品久久久水蜜桃 | aaa国产大片 | 亚洲精品久久久一区二区三区 | 国产精品久久久久无码av | 国产剧情久久 | 欧美一区二区三区在线观看视频 | 人人干在线 | 97av视频 | 好姑娘高清在线观看电影 | 欧美一区二区三区一在线观看 | 久久综合影院 | 国产情侣在线看 | 欧美在线网站 | 国产精品99久久久精品免费观看 | 亚洲天堂精品久久 | 亚洲欧美成人影院 | 91亚洲国产成人久久精品网站 | 欧美一区二区三区在线看 | 久久国产精品视频 | 亚洲欧美国产精品一区二区 | 欧美日韩激情 | 欧美一级三级在线观看 | www.一级毛片 |