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

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

開發 后端
MVC模式大家并不陌生,用的比較多的是ASP.NET MVC模式。今天我們要簡單談一下iPhone下的MVC設計模式。

整理自斯坦福大學iphone開發公開課,并加入了一些自己的理解。

一、概念 

Model = 你的應用程序是什么,是用戶界面無關的部分

Controller = 你的應用程序如何將Model顯示給用戶(UI邏輯),是中心是橋梁,連通Model和View

View = Controller的奴才(minion)、小跟班。view一切聽從Controller的指揮,并及時將重要事件報告給Controller

二、通信

 

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工程系統,會為我們生成以下文件:

BtnClickAppDelegate.h

BtnClickAppDelegate.m

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

BtnClickViewController.h
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的范疇。

至于為什么這么麻煩地分成三塊,而不是兩塊,或者干脆一砣?只能在我們編程過程中慢慢體會了。

原文鏈接:http://www.cnblogs.com/hjblog/archive/2011/04/21/2023597.html

責任編輯:彭凡 來源: 博客園
相關推薦

2011-06-02 18:02:50

iPhone MVC

2012-01-18 10:20:42

框架設計

2023-10-26 09:02:30

框架設計模式

2012-06-25 12:43:26

.NET框架

2020-07-30 10:35:32

Java反射框架設計

2023-07-03 07:39:43

Spring框架設計模式

2012-06-25 09:28:42

.NET可逆框架

2010-01-08 12:03:42

ibmdwREST

2017-11-23 17:21:31

Yii框架IntelYii框架深度剖析

2016-03-23 11:05:58

Socket開發框架分析

2009-05-04 13:25:41

PHPMVCcodeigniter

2009-09-08 09:12:12

LINQ構建框架設計

2021-02-23 08:18:04

Java 反射機制

2022-06-15 11:01:59

自定義SPIJava

2022-09-15 18:32:13

SPI模型框架

2017-02-13 13:10:35

JavaScript設計模式

2010-09-25 13:09:39

UISymbian

2012-01-10 10:04:43

Node.js

2010-01-07 09:59:16

RESTMVC

2022-07-01 07:49:04

云存儲服務模式數據結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频免费在线 | 亚洲精品国产综合区久久久久久久 | 欧美一级免费看 | 毛片一区二区三区 | 久久之精品 | 午夜寂寞福利视频 | 欧美日韩精品在线一区 | 午夜精品久久久久久 | 亚洲精品一区二三区不卡 | 欧美v日韩| 特级黄一级播放 | 91青娱乐在线 | 久久精品视频在线播放 | 欧美国产免费 | 国产精品久久久久久婷婷天堂 | 欧美日韩中文字幕在线 | 超级乱淫av片免费播放 | 黄色毛片黄色毛片 | 91一区二区三区在线观看 | 精品自拍视频在线观看 | 精品国产乱码久久久久久牛牛 | 精品国产欧美一区二区 | 成人黄色电影免费 | 久久亚洲国产精品日日av夜夜 | 日韩欧美在线观看 | 日本不卡一区 | 国产一区二区成人 | 久久精点视频 | 欧美区在线 | 中文日韩字幕 | 欧美在线色 | 91精品国产综合久久久亚洲 | 免费h在线 | 一级午夜aaa免费看三区 | 色男人天堂av | 久久久精彩视频 | 久久高清免费视频 | 精品久久精品 | 成人三级电影 | 欧美激情精品久久久久久 | 久久高清|