亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解析iPhone中的MVC框架設計模式

發布時間:2021-12-20 13:41:49 來源:億速云 閱讀:140 作者:柒染 欄目:編程語言

怎么解析iPhone中的MVC框架設計模式,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

一、概念 

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

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

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

二、通信

怎么解析iPhone中的MVC框架設計模式

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應用程序的生命周期:

怎么解析iPhone中的MVC框架設計模式

BtnClickViewController.h

BtnClickViewController.m

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

@interface BtnClickViewController : UIViewController{  IBOutlet UILabel* statusText;  }  @property (retain,nonatomic) UILabel *statusText;  - (IBAction)buttonPressed:(id)sender;  @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框架設計模式問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芒康县| 峨边| 疏勒县| 孝感市| 苍南县| 六安市| 松桃| 东乡族自治县| 呼和浩特市| 松阳县| 治县。| 崇明县| 中山市| 同心县| 杨浦区| 望城县| 尼木县| 中宁县| 黄骅市| 苏尼特左旗| 平凉市| 墨竹工卡县| 博客| 景宁| 米泉市| 墨脱县| 渝中区| 金沙县| 南乐县| 左权县| 若尔盖县| 盐边县| 霍山县| 西城区| 云南省| 巴彦淖尔市| 洱源县| 庄河市| 古丈县| 龙胜| 广西|