CS193筆記 第二講 MVC 和 計(jì)算器應(yīng)用

雖然只是課程的第二講,但其中的干貨還是很多的骂远。強(qiáng)烈建議跟著視頻一起動(dòng)手實(shí)現(xiàn)囚霸。

本講簡(jiǎn)介:本講主要涉及三方面的內(nèi)容。一激才,MVC拓型。二,計(jì)算器的實(shí)現(xiàn)(枚舉, 閉包)三瘸恼,自動(dòng)布局劣挫。

一,MVC东帅。這應(yīng)該是最著名的設(shè)計(jì)架構(gòu)了压固。學(xué)習(xí)MVC 要注意掌握以下要點(diǎn)

Model : 模型是應(yīng)用的核心,代表了應(yīng)用所包含的數(shù)據(jù)靠闭,以及對(duì)數(shù)據(jù)的操作帐我。

Controller: 控制器決定了模型是如何被展示的

View: 視圖是控制器的附屬,被控制器用來(lái)展示數(shù)據(jù)

關(guān)鍵點(diǎn): 視圖和模型相互之間不應(yīng)該有任何直接的交流愧膀。

另外要注意的是拦键,并不是所有顯示出來(lái)的內(nèi)容都屬于View,比如計(jì)算器應(yīng)用中的那些按鈕檩淋。應(yīng)用中往往還包含許多屬于MVC以外的東西芬为。MVC只是人們用來(lái)刻畫(huà)應(yīng)用中一種常見(jiàn)的核心的架構(gòu)。實(shí)際應(yīng)用中常常要包含多個(gè)MVC架構(gòu)一起工作蟀悦。一個(gè)MVC可以做為一個(gè)整體成為另一個(gè)MVC中的View媚朦。

深刻理解和掌握MVC架構(gòu)有助于我們做出簡(jiǎn)潔、高效的設(shè)計(jì)日戈。從MVC中還衍生出一些其它的所謂新的架構(gòu)莲镣,如MVVM,MVP涎拉。不建議新手去過(guò)多涉及,容易糊涂的圆。等自己有過(guò)一些實(shí)踐之后鼓拧,再去看更容易理解或者發(fā)現(xiàn)自己已經(jīng)應(yīng)用過(guò)這些架構(gòu)了。重點(diǎn)是掌握設(shè)計(jì)背后所遵循的原則越妈。

計(jì)算器:

計(jì)算器的實(shí)現(xiàn)通常是使用堆棧季俩。比如在iOS 8 版的cs193p中的演示就是基于堆棧實(shí)現(xiàn)的。這個(gè)版本和上一版使用了一個(gè)臨時(shí)的結(jié)構(gòu)PendingBinaryOperation來(lái)存貯前一個(gè)操作數(shù)和操作符梅掠。這樣帶來(lái)的一個(gè)問(wèn)題是如果連續(xù)操作的話只會(huì)保留最后一次的結(jié)果酌住。例如店归,連續(xù)按 1+2+3+4+5= 結(jié)果會(huì)是9 而不是15。這樣的實(shí)現(xiàn)很大程度是因?yàn)橐榻B枚舉的關(guān)聯(lián)值特性酪我。

枚舉成員可以指定任意類(lèi)型的關(guān)聯(lián)值存儲(chǔ)到枚舉成員中消痛。

帶關(guān)聯(lián)值的枚舉成員

這個(gè)枚舉類(lèi)型包含4個(gè)成員。其中3個(gè)含有關(guān)聯(lián)值都哭。function 也可以作為關(guān)聯(lián)值秩伞。使用這樣的枚舉成員時(shí)需要同時(shí)標(biāo)明相應(yīng)的關(guān)聯(lián)值。關(guān)聯(lián)值可以給有不止一個(gè)欺矫。關(guān)聯(lián)值的提取可以用let纱新,也可以用 var。詳細(xì)可以參考官方的Swift手冊(cè)穆趴。

閉包可以看作是一個(gè)未命名函數(shù)脸爱,或者一堆語(yǔ)句操作的集合。

Autolayout:

蘋(píng)果提倡在story board中直接利用autolayout進(jìn)行布局未妹。雖然使用story board在協(xié)同開(kāi)發(fā)的時(shí)候可能會(huì)引起混亂簿废。但這不影響Autolayout 成為iOS開(kāi)發(fā)必須要掌握的內(nèi)容之一。關(guān)于autolayout的介紹在后面的課程里還會(huì)涉及教寂。在本講中捏鱼,主要是利用stack view 來(lái)組織和排列計(jì)算器的按鈕和結(jié)果顯示,比較易懂酪耕。感興趣的同學(xué)還可以試驗(yàn)一下去掉一個(gè)按鈕导梆,比如cos,然后讓等號(hào)變?yōu)閮杀秾捲撊绾尾季帧?/p>

另外在Xcode 中可以非常方便地觀察當(dāng)前的布局在不同設(shè)備上的表現(xiàn)迂烁。所以基本不需要使用preview了看尼。

其它:

本講提到了類(lèi),結(jié)構(gòu)以及枚舉類(lèi)型的一些異同盟步。下一講還有介紹藏斩。

結(jié)構(gòu)會(huì)自動(dòng)獲得一個(gè)構(gòu)造函數(shù)( initializer),大家可以根據(jù)下圖想象一下它的樣子

?
結(jié)構(gòu)的初始化

因?yàn)榻Y(jié)構(gòu)在傳遞時(shí)使用的是值拷貝却盘,所以如果一個(gè)結(jié)構(gòu)的成員函數(shù)會(huì)修改自身狰域,函數(shù)須要用mutating標(biāo)明。

constant 和 unaryOperation 在swift中都不是保留字

函數(shù)如同class黄橘, struct兆览,double一樣也是一種類(lèi)型

使用Playground 可以方便的驗(yàn)證代碼的效果。這在學(xué)習(xí)新語(yǔ)言的時(shí)候很有用塞关。

影響應(yīng)用性能的三種操作抬探,由大到小排列是:網(wǎng)絡(luò)下載 > 屏幕繪圖/顯示 > 從數(shù)據(jù)庫(kù)中取數(shù)據(jù)

本講用到的快捷鍵:

?+?+Space ? ? ? ?// 顯示符號(hào)輸入對(duì)話框 ? ??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帆赢,隨后出現(xiàn)的幾起案子小压,更是在濱河造成了極大的恐慌线梗,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怠益,死亡現(xiàn)場(chǎng)離奇詭異仪搔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)溉痢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)僻造,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人孩饼,你說(shuō)我怎么就攤上這事髓削。” “怎么了镀娶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵立膛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我梯码,道長(zhǎng)宝泵,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任轩娶,我火速辦了婚禮儿奶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鳄抒。我一直安慰自己闯捎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布许溅。 她就那樣靜靜地躺著瓤鼻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贤重。 梳的紋絲不亂的頭發(fā)上茬祷,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音并蝗,去河邊找鬼祭犯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滚停,可吹牛的內(nèi)容都是我干的沃粗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼铐刘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了影晓?” 一聲冷哼從身側(cè)響起镰吵,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤檩禾,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后疤祭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盼产,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年勺馆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戏售。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡草穆,死狀恐怖灌灾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悲柱,我是刑警寧澤锋喜,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站豌鸡,受9級(jí)特大地震影響嘿般,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涯冠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一炉奴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蛇更,春花似錦瞻赶、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吨瞎,卻和暖如春痹兜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颤诀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工字旭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崖叫。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓遗淳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親心傀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屈暗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器养叛,智...
    卡卡羅2017閱讀 134,672評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評(píng)論 25 707
  • 1 當(dāng)早晨的第一縷陽(yáng)光照進(jìn)病房時(shí)种呐,唐軍已經(jīng)已經(jīng)做完了術(shù)前的一切準(zhǔn)備,正靜靜的躺在床上等待手術(shù)室護(hù)士的到來(lái)弃甥。心里完全...
    冰月月閱讀 357評(píng)論 9 12
  • 今晚聽(tīng)了雨濃老師關(guān)于如何減肥的千聊課程爽室,分享給晨型君們。 1.減肥前先要了解自己淆攻,知道自己的身體也就是體檢啦阔墩!要確...
    一只小小的蛹閱讀 263評(píng)論 0 0