本片文章介紹MVC設(shè)計(jì)模式及其在iOS開(kāi)發(fā)中的使用技巧
創(chuàng)新互聯(lián)建站是一家專(zhuān)注于網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站與策劃設(shè)計(jì),陜西網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:陜西等地區(qū)。陜西做網(wǎng)站價(jià)格咨詢(xún):18980820575什么是MVC設(shè)計(jì)模式
MVC是設(shè)計(jì)模式的起源,也是在軟件工程領(lǐng)域使用最多的一種設(shè)計(jì)模式。
MVC即:Model模型、View視圖、Controller控制器
模型:
在模型對(duì)象中封裝數(shù)據(jù)并定義操作數(shù)據(jù)的特定邏輯行為
模型可以表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),可以是屏幕上顯示的數(shù)據(jù)、等待處理的數(shù)據(jù)等
視圖:
使用視圖對(duì)象向用戶(hù)展示信息
視圖對(duì)象可以響應(yīng)用戶(hù)的操作,并懂得如何將自己展現(xiàn)在屏幕上
視圖對(duì)象通常從應(yīng)用程序的模型對(duì)象中獲取數(shù)據(jù)用以展示。
可以跟一個(gè)模型對(duì)象的部分、整體或者多個(gè)模型對(duì)象合作。
控制器:
使用控制器將模型和視圖聯(lián)系在一起,就像視圖對(duì)象和模型對(duì)象的中間人。
控制器對(duì)象還可以為應(yīng)用程序執(zhí)行其他操作,比如管理其他對(duì)象的生命周期,進(jìn)行設(shè)置和協(xié)調(diào)工作
用戶(hù)通過(guò)從視圖對(duì)象(如在文本框中輸入)得到的值,傳給控制器對(duì)象,控制器對(duì)象也可以讓視圖對(duì)象根據(jù)此用戶(hù)操作改變其外觀或行為。
模型的使用
1. 在控制器中封裝模型對(duì)象(數(shù)組)
如果是簡(jiǎn)單對(duì)象(如NSString),無(wú)需使用模型類(lèi)進(jìn)行封裝
如果是非OC對(duì)象,則應(yīng)進(jìn)行一定的封裝;
如果是詞典數(shù)據(jù),則應(yīng)字典轉(zhuǎn)模型
2. 字典轉(zhuǎn)模型
在iOS中數(shù)據(jù)的來(lái)源往往是:JSON、plist、XML等,這些數(shù)據(jù)首先轉(zhuǎn)換為字典或數(shù)組。
為了方便管理字典中的數(shù)據(jù),采用字典轉(zhuǎn)模型的方法,以模型對(duì)象管理。
字典的key作為模型中的屬性名
字典中的value作為模型對(duì)象中的屬性值。
構(gòu)造模型對(duì)象的方法中,傳遞字典對(duì)屬性進(jìn)行初始化,
3. 控制器的模型數(shù)組屬性應(yīng)當(dāng)采取懶加載方式
即:重寫(xiě)數(shù)組的getter方法,讓模型數(shù)據(jù)在第一次被使用時(shí)加載。
在屬性指針為nil時(shí),從指定位置將數(shù)據(jù)加載的程序中,并創(chuàng)建數(shù)組將數(shù)據(jù)存儲(chǔ)到數(shù)組中。
指定的位置可以是本地的數(shù)據(jù)庫(kù)、plist、JSON,網(wǎng)絡(luò)傳遞過(guò)來(lái)的數(shù)據(jù)等。
視圖的使用
純代碼設(shè)計(jì)視圖:
1. 定義一個(gè)視圖子類(lèi)
2. 提供類(lèi)方法創(chuàng)建視圖對(duì)象
2.1 類(lèi)方法封裝alloc+init
2.2 重寫(xiě)init方法,創(chuàng)建所有的子視圖并進(jìn)行一次性的屬性設(shè)定
2.3 進(jìn)行屏幕適配:重寫(xiě)layoutSubviews方法或使用AutoLayout
3. 視圖子類(lèi)添加數(shù)據(jù)模型屬性并重寫(xiě)setter方法將數(shù)據(jù)顯示到子視圖
如果子視圖的數(shù)據(jù)固定可能不需要數(shù)據(jù)模型屬性
xib設(shè)計(jì)視圖:
1. 在Xib中設(shè)計(jì)一個(gè)視圖,設(shè)計(jì)好視圖中的子控件及其相關(guān)屬性,并進(jìn)行屏幕適配
2. 定義一個(gè)視圖的子類(lèi),父類(lèi)類(lèi)型應(yīng)當(dāng)為Xib中設(shè)置的視圖類(lèi)的類(lèi)型,并在xib中進(jìn)行關(guān)聯(lián)
3. 提供類(lèi)方法創(chuàng)建視圖對(duì)象,使用xib加載視圖對(duì)象的方式
3. 視圖子類(lèi)添加數(shù)據(jù)模型屬性并重寫(xiě)setter方法將數(shù)據(jù)顯示到子視圖
如果子視圖的數(shù)據(jù)固定可能不需要數(shù)據(jù)模型屬性
控制器的使用
控制器作為視圖與模型的橋梁,應(yīng)答具有以下功能:
1. 管理視圖對(duì)象
2. 管理模型對(duì)象(數(shù)組)
3. 實(shí)現(xiàn)關(guān)聯(lián)的業(yè)務(wù)邏輯,如:子視圖的創(chuàng)建、模型的賦值等
4. 處理各種復(fù)雜的業(yè)務(wù)邏輯,如:按鈕被點(diǎn)擊時(shí)的響應(yīng)動(dòng)作
控制器可分成如下幾類(lèi):
視圖控制器:作為一個(gè)頁(yè)面的管理者
代理控制器:用來(lái)實(shí)現(xiàn)某些對(duì)象的數(shù)據(jù)源和代理方法
模型控制器:管理復(fù)雜的模型數(shù)據(jù),包括獲取、解析等功能
...
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。