**:
整理自史丹福大學iphone開發公開課,並加入了一些自己的理解。
一、概念 model = 你的應用程式是什麼,是使用者介面無關的部分 controller = 你的應用程式如何將model顯示給使用者(ui邏輯),是中心是橋梁,連通model和view view = controller的奴才(minion)、小跟班。view一切聽從controller的指揮,並及時將重要事件報告給controller
二、通訊 mvc設計模式,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的質量以節省記憶體。
三、實作 建立乙個btnclick工程系統,會為我們生成以下檔案:
iphone應用程式的生命週期: mvc設計模式,iphone mvc設計模式要點
btnclickviewcontroller.h btnclickviewcontroller.m 實現了mvc中的controller.可以定義一些iboutlet元素和ibaction方法與view通訊。
@inte***ce 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的範疇
IOS開發基礎之 MVC模式
整理自史丹福大學iphone開發公開課,並加入了一些自己的理解。一 概念 model 你的應用程式是什麼,是使用者介面無關的部分 controller 你的應用程式如何將model顯示給使用者 ui邏輯 是中心是橋梁,連通model和view view controller的奴才 minion 小跟...
iOS開發基礎 MVC
mvc模式我們談得夠多了,但總有一些爭議,比如rac說明文件裡關於mvc的描述是這樣的 來自reactivecocoa專案 史丹福大學的ios公開課第一課 來自斯坦福公開課 中文維基百科上mvc條目的配圖 來自中文維基百科 乍一看,以上都是三角形,都描述了model view controller三...
iOS開發 MVC設計模式
聽說現在開始流行mvvm設計模式,聽上去好像有點新奇,暫時還是習慣mvc設計模式,接下來主講mvc模式.說到ios中的mvc還是從2011秋季斯坦福課程的老頭的iphone公開課講起,這個教授講的概念很準確 並且最為淺顯易懂的.model view controller mvc設計模式認為有三種型別...