objc 自己較為熟悉,想熟悉下風頭正勁的 swift。就先從官方的入門手冊開始擼。 每一小節,我都摘錄或總結3個對自己三觀衝擊最大的【知識點】,以方便以後溫習。總結不保證絕對正確,僅供交流之用。O(∩_∩)O哈哈~ ...
素材:A Swift Tour
推薦下載Playground:Download Playground
objc 自己較為熟悉,想熟悉下風頭正勁的 swift。就先從官方的入門手冊開始擼。
每一小節,我都摘錄或總結3個對自己三觀衝擊最大的【知識點】,以方便以後溫習。總結不保證絕對正確,僅供交流之用。O(∩_∩)O哈哈~
Simple Values
- var 表示變數
- let 聲明常量
- [] 用於聲明數組和字元串
Control Flow
- if 或 while 等的判斷條件中必須使用布爾值.
- 判斷條件中的可能為 nil 值,統一使用 let varName = maybeNil 語法.
- for in 迴圈,可同時應用於數組,字典或特定範圍(Range).
Functions and Closures
- 形參新增了 "標簽" 語義,有效豐富了函數重載的語義
- "標簽" 語義,不適合用於用作函數參數或函數返回值的函數的聲明裡.
- 閉包中,區分參數和函數體的,是通過 in 關鍵字來分割的.
Objects and Classes
- swift 預設不會使用零值在聲明時初始化變數.
- let 常量,只能初始化一次,但可以不在聲明時立即初始化.
- 子類初始化順序是: 子類未初始化屬性的初始化 --> 調用父類 init 方法 --> 其他額外操作
Enumerations and Structures
- struct 是複製傳值,即使只是簡單的 var a = b, a 和 b 也是兩個獨立的對象.
- enum 不是必須和某個類型值的關聯.
- enum 可以使用某種模式來作為動態匹配的 case.
Protocols and Extensions
- 增加新數據結構通用語法: [class|struct|enum|extension|protocol] 名稱 : [class|protocol] {...}
- Int 等基礎類型,其實現是一個 Struct
- enum 和 extension 不可以持有屬性,但是可以用 get 方法來模擬一個屬性
Error Handling
- try 和有 throws 聲明的函數配對使用.
- try? 可選操作,有異常拋出則返回nil; try! 強制操作,有異常拋出,則拋出無法 do-catch 的致命異常.
- defer block 在函數異常退出時,也可以正常執行.
Generics
- 函數,方法,類,枚舉和結構體支持泛型的泛型的方式,就是在聲明時的名稱後,加 <泛型1, 泛型2, ...>
- 使用泛型時,要保證能在編譯期推導出其類型.
- 可以使用 where 指定對泛型類型本身的一些要求.