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