OOP,iOS,MVC
延慶ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!何政達(dá)
【前言】:寫這篇文章的目的是總結(jié)一下這幾天學(xué)到的有關(guān)iOS編程的有關(guān)知識點(diǎn)。主要分三部分:OOP的設(shè)計理念;iOS的構(gòu)成;MVC的具體應(yīng)用。
Part I :OOP
說起OOP,大家都知道是什么——面向?qū)ο蟪绦蛟O(shè)計(Object-OrientedProgramming)。但是我們?yōu)槭裁匆褂眠@樣的一種設(shè)計模式來進(jìn)行我們的程序設(shè)計呢?記得一開始學(xué)習(xí)編程的時候是小學(xué)六年級,當(dāng)時學(xué)習(xí)的是BASIC;上了初中以后學(xué)習(xí)PASCAL語言;上了高中開始學(xué)習(xí)C語言;到了大學(xué)之后逐漸熟悉了Java,Python,Object-C。在常用的設(shè)計模式當(dāng)中,面向過程和面向?qū)ο筮@兩種設(shè)計模式是使用最廣泛的。面向過程往往用于一個具體任務(wù)的設(shè)計實(shí)現(xiàn)(比如在科學(xué)計算當(dāng)中具體算法的實(shí)現(xiàn));而面向?qū)ο蟮脑O(shè)計模式往往是針對可視化程序、網(wǎng)絡(luò)以及移動程序設(shè)計的;在這些程序當(dāng)中,可能沒有一個真正線性的從頭到尾的“流程”。比如一個程序上有許多按鈕,用戶可能隨意按任何一個按鈕,而且人和人之間選擇的方式又有所區(qū)別,因此順序式的程序設(shè)計顯然不能滿足我們對于程序的高要求。那么下面我們就用非常簡單的語言來描述一下什么叫面向?qū)ο蟪绦蛟O(shè)計。
面向?qū)ο蟪绦蛟O(shè)計的靈魂概念是“對象”(別想歪了。。。。)。一個對象就是一個“實(shí)例物體”,它具有兩種最基本的屬性:(1)將自己與別人進(jìn)行區(qū)分的instantvariable(2)自己可以執(zhí)行的一些method。從這我們就可以知道我們使用一個對象的方式其實(shí)非常簡單:利用instant variable找到我們想用的對象,然后再使用方法調(diào)用來運(yùn)用相關(guān)的方法來完成任務(wù)。對象與對象之間的協(xié)作也是非常重要的一個方面,我們使用一種所謂“protocol”的方法來進(jìn)行這樣的協(xié)作,用來完成更復(fù)雜的任務(wù)。當(dāng)然還可以有delegate這樣的復(fù)雜關(guān)系(一個對象的方法會使用另一個對象的方法)。
那么我們?nèi)绾稳uild一個對象呢?這就需要一個抽象化的思維:類。比如我們?nèi)?,你和我都是人的?shí)例(也就是對象),我們有自己的名字、年齡、身高、體重,這些數(shù)據(jù)就是我們的instantvariables;同時我們還擁有一些方法:說話、唱歌、吃飯等等,這些方法說明了我們可以做什么事情。但是人作為一個概念卻具有廣泛的共性,這樣我們就可以將這樣的共性提取出來,和對象一樣,進(jìn)行兩部分的設(shè)計:(1)instantvariables(2)methods。當(dāng)我們建立好了一個類以后,我們就可以利用類中的Init(初始化)方法來新建一個對象并對其進(jìn)行初始化。而對于Instantvariable(在Object-C當(dāng)中稱為property)我們也會有相應(yīng)的getter與setter來進(jìn)行選擇和處理。
要想良好的使用OOP的程序設(shè)計模式,思考方式的轉(zhuǎn)變必不可少。原來我們都是以“算法”為中心,以具體的步驟為中心。但是在OOP設(shè)計模式中,我們更關(guān)心的是Object之間的相互協(xié)作來完成復(fù)雜的任務(wù)。而且在OOP當(dāng)中,重用性和封裝程度是非常重要的兩個指標(biāo),我們需要盡可能增加我們類的重用性以及盡可能將我們需要的功能封裝到類當(dāng)中。當(dāng)然如果我們需要對類進(jìn)行進(jìn)一步的細(xì)節(jié)化(但又不是直接新建一個object),那么這個時候就開始了inherite(繼承)的觀念。目前我還沒有學(xué)到有關(guān)于繼承的深層次的東西,因此這次就不在這里敘述。
總結(jié)一下,OOP的核心就是:類àObjectàObject之間的協(xié)作。
iOS
什么是iOS?iOS包括哪些東西?這是我們在進(jìn)行iOS開發(fā)之前必須要搞清楚的問題。iOS是運(yùn)行在iphone以及ipad上的操作系統(tǒng)。它是Unix為底層的一個移動端操作系統(tǒng)。而在unix kernel之上又加了許多的應(yīng)用和接口(API),以及相應(yīng)的框架(Framework)。因此iOS最核心的應(yīng)該是:(1)Objective-C語言(2)Cocoa Touch框架(3)其他的重要服務(wù)(視頻、音頻、網(wǎng)絡(luò)、游戲等等)。在StanfordCS139P第一講的PPT當(dāng)中有詳細(xì)的介紹。因此在這里就不贅述了,如果好奇想了解更多,不妨去看看第一講的PPT。因此學(xué)習(xí)iOS程序設(shè)計最困難的也就是掌握Cocoa Touch以及iOS包含的眾多Framework。我們要清楚:所有的Framework都是OOP的,它們都使用OOP的設(shè)計理念來進(jìn)行設(shè)計并進(jìn)行整合的。因此整個iOSprogramming就是OOP。這點(diǎn)非常的重要。
MVC
在iOS編程當(dāng)中,我們使用的設(shè)計模式是MVC(Model-View-Controller)。那么下面就分別按照Model,View,Controller進(jìn)行總結(jié)。
Model顧名思義就是你的程序是做什么的,你的程序的具體實(shí)現(xiàn)思路怎樣(注意:在model當(dāng)中的邏輯是完全不考慮UI的,我們就在純粹的思維上去進(jìn)行思考)。它會包含你的程序所需要的所有數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)結(jié)構(gòu)之間的相互作用關(guān)系。這就是model。有了model,就知道程序是如何去做的了。
View就是我們程序和用戶進(jìn)行交互的地方,也是我們?nèi)绾卧O(shè)計讓我們的程序去執(zhí)行的地方,但是注意:View完全不知道我們要執(zhí)行的是什么東西。它只聽Controller的話。Controller讓它干嘛,它就干嘛。讓它顯示什么就顯示什么。
Controller是連接Model和View的橋梁,也是我們需要在Xcode編程當(dāng)中花大力氣去編寫的。Controller可以向Model詢問,也可以向View詢問。
Model,View,Controller之間的關(guān)系:
(1) Controller可以指向Model以及View
(2) Model絕對不能和View進(jìn)行互動
(3) Model如果改變想提醒Controller,需要使用一種類似于“radio”的方式進(jìn)行
(4) View如何受到互動(比如用戶按了一個按鈕),那么它會以target-action的方式告訴Controller,然后等待Controller告訴它下一步應(yīng)該如何去做。
(5) View也會和Controller有兩種方式的互動:一種稱為Data Source,另外一種是“did,should, would”形式的。這個在不同的UIView的Object中會有應(yīng)用。
如果我們熟練掌握了上面5種MVC中的交互方式,我們就能很好的使用Xcode以及iOS中的Framework,因?yàn)樗鼈兊脑O(shè)計都是基于MVC的。
【總結(jié)】:在上面我們簡單的總結(jié)了OOP,iOS以及MVC的相關(guān)知識點(diǎn)。當(dāng)然我才剛剛開始接觸iOS,后面還有很長的路要走,要寫許多許多自己的class;也要熟悉iOS所提供的Framework以及相應(yīng)的SDK。千里之行始于足下,加油吧。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。