Swift 學習筆記 Lecture 2. Model - View - Controller

傳送門: 斯坦福CS193P課程 Ready!Go秒咨!

第二篇比第一篇格式更亂,東西比較散雨席,符合散裝筆記原汁原味的感覺菩咨,后面我想到了一種比較好的排版方式,后面的筆記按照新樣式標記陡厘,前面的請諒解

上一篇:Swift 學習筆記 Lecture 1. Introduction to iOS 11 , Xcode 9 and Swift 4

MVC是什么?

MVC是一種設計模式糙置,分別代表Model云茸,View谤饭,Controller查辩,其中Model負責業(yè)務邏輯和數據存取等网持,Controller負責如何將Model中的數據和邏輯顯示出來宜岛,View主要由頁面的控件組成功舀。Model和View之間沒有直接的交換,Controller與Model交互辟汰,Controller與View交互

View向Controller通訊時使用target方式列敲,例如IBAction當用戶觸發(fā)Button時阱佛,Button通過target反饋給Controller

View向Controller通訊用的第二種方式時代理模式戴而,比如UITableViewDelegate & DataSourceDelegate

Model向Controller通訊用Notification & KVO

Class中默認init方法為空參數凑术,Class中未定義init()方法,我們可以調用默認的空參init

Swift 中定義的變量需要一開始就初始化所意,使用實例變量對另一個變量進行初始化會報錯

使用 lazy 關鍵詞定義變量則可以避免這個編譯錯誤淮逊,它將在第一次被使用時才賦值

使用 lazy 的副作用是不能使用 觀察者KVO模式 對變量進行觀察

數組.indices 返回了所有索引的可用范圍

所以 0..<數組.count 等價于 數組.indices

字典定義 Dictionary<Int,String>() 等價于 [Int:String]()

字典中可能取出空值或者unset對象扶踊,會造成程序crash泄鹏,可以驗證是否為nil后再返回數據

Swift中連續(xù)的if可以改寫為 , 間隔 if A { if B { ... } } 可以改為 if A,B { ... }

?? 雙問號判空 if (obj != nil){ return obj } else { return xxx } 等價于 return obj ?? xxx

? 使用Optional 定義變量 秧耗, 變量可以合法的設置為nil, var obj: Int? 這樣的定義中 obj可以合法的置為nil,當變量有可能為nil時可以使用 分井?后綴

Countable Range 是Swift中特殊的語法车猬,用于數據從0~N遞增

x ..< y 表示從x到y(tǒng),不包含y

x ... y 表示從x到y(tǒng)尺锚,包含y

當一個struct被賦值給另一個變量時,執(zhí)行的是值拷貝

當一個struct被重復加入Array缩麸,Dictionary時铸磅,執(zhí)行的也是值拷貝杭朱,會有多個互不影響struct被保存

cards += [card,card] 等價于兩次 cards.append(card)

_ 下劃線可以替代未使用過的變量阅仔,比如在方法定義中替代外部參數名弧械,在for循環(huán)中替代未使用過的index八酒,表示我們并不在意該參數

collection 中使用 .shuffle() 方法可以讓數據隨機重新排序

Swift中 struct結構 和 class類 幾乎相同刃唐,他們都可以定義自己的方法,變量等等

struct和class中兩個非常重要的不同點画饥,1.struct沒有繼承衔瓮,2.struct是值引用,class是指針引用

值引用在被分配給另一個變量時會做值拷貝(深拷貝)抖甘,指針引用被賦值給其他變量時會做指針拷貝(淺拷貝)

Array,Int,String薇宠,Dictionary都是struct類型偷办,所以當被賦值給多個變量時澄港,對他們進行值操作互不影響

Swift中struct做值拷貝并不會特別的占用資源和降低效率椒涯,只有當需要時才會執(zhí)行值拷貝回梧,稱之為copy-on-write寫時復制

struct中不重寫 init()方法,那么默認的init方法會以所有未初始化值的參數創(chuàng)建一個構造函數漂辐,同時也以所有參數一起創(chuàng)建一個構造函數,所以我們可以調用到兩個默認的構造函數棕硫,這點與Class不同

init方法不同于其他方法髓涯,可以使用相同的內部名稱和外部名稱

self.變量 標記使用類變量哈扮,這在方法參數和成員變量同名時使用,和Java等其他語言一樣

靜態(tài)方法一般用于定義工具類和工具方法滑肉,例如 加解密工具類 包各,String工具類, Color 工具類等等

靜態(tài)方法中訪問靜態(tài)成員變量不需要 class. 前綴

靜態(tài)成員變量靶庙,所有實例均共享同一個靜態(tài)成員變量


下一篇:Swift 學習筆記 Usefull 1. Debugging and Xcode Tips and Tricks

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市六荒,隨后出現(xiàn)的幾起案子护姆,更是在濱河造成了極大的恐慌掏击,老刑警劉巖卵皂,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砚亭,死亡現(xiàn)場離奇詭異,居然都是意外死亡捅膘,警方通過查閱死者的電腦和手機添祸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膝捞,“玉大人,你說我怎么就攤上這事∈咭В” “怎么了鲤遥?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵林艘,是天一觀的道長。 經常有香客問我狐援,道長钢坦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任爹凹,我火速辦了婚禮,結果婚禮上镶殷,老公的妹妹穿的比我還像新娘禾酱。我一直安慰自己绘趋,他們只是感情好颤陶,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布陷遮。 她就那樣靜靜地躺著滓走,像睡著了一般帽馋。 火紅的嫁衣襯著肌膚如雪搅方。 梳的紋絲不亂的頭發(fā)上绽族,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音项秉,去河邊找鬼绣溜。 笑死,一個胖子當著我的面吹牛娄蔼,可吹牛的內容都是我干的。 我是一名探鬼主播岁诉,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼锚沸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了塑煎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤牛隅,失蹤者是張志新(化名)和其女友劉穎磕谅,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年俭尖,在試婚紗的時候發(fā)現(xiàn)自己被綠了洞翩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稽犁。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡骚亿,死狀恐怖,靈堂內的尸體忽然破棺而出来屠,到底是詐尸還是另有隱情虑椎,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布的妖,位于F島的核電站足陨,受9級特大地震影響嫂粟,放射性物質發(fā)生泄漏。R本人自食惡果不足惜墨缘,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镊讼。 院中可真熱鬧宽涌,春花似錦、人聲如沸蝶棋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兼贸。三九已至,卻和暖如春吃溅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背决侈。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工螺垢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓功茴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讯蒲。 傳聞我的和親對象是個殘疾皇子痊土,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355