第1章 馬斯堡遊記 1
1.1 買票 1
1.2 導遊 13
1.3 飛碟 22
1.4 鬥法 23
1.5 題詩 27
第2章 Swift初見 28
2.1 Hello World 28
2.2 簡單值 29
2.3 控製流 30
2.4 函數和閉包 33
2.5 對象和類 35
2.6 枚舉和結構 39
2.7 協議和擴展 42
2.8 泛型 43
第3章 語法入門 45
3.1 基礎 45
3.1.1 常量和變量 45
3.1.2 注釋 48
3.1.3 分號 49
3.1.4 整數 49
3.1.5 浮點數 50
3.1.6 類型安全和類型推斷 50
3.1.7 數值字麵量 51
3.1.8 數值類型轉換 52
3.1.9 類型彆名 53
3.1.10 布爾值 54
3.1.11 元組 55
3.1.12 可選 56
3.1.13 斷言 60
3.2 基本運算符 61
3.2.1 術語 61
3.2.2 賦值運算符 62
3.2.3 算術運算符 62
3.2.4 求餘運算符 63
3.2.5 浮點數求餘運算符 64
3.2.6 自增和自減運算符 64
3.2.7 單目負號運算符 65
3.2.8 單目正號運算符 65
3.2.9 復閤賦值運算符 65
3.2.10 比較運算符 66
3.2.11 三目條件運算符 66
3.2.12 nil閤並運算符 67
3.2.13 區間運算符 68
3.2.14 邏輯運算符 69
3.3 字符串與字符 71
3.3.1 字符串字麵量 72
3.3.2 初始化空字符串 73
3.3.3 字符串可變性 73
3.3.4 字符串是值類型 73
3.3.5 使用字符 74
3.3.6 連接字符串和字符 74
3.3.7 字符串插值 75
3.3.8 Unicode 75
3.3.9 計算字符數量 77
3.3.10 比較字符串 78
3.4 集閤類型 79
3.4.1 集閤的可變性 80
3.4.2 數組 80
3.4.3 字典 84
3.5 流程流 89
3.5.1 for循環 89
3.5.2 while循環 93
3.5.3 條件語句 96
3.5.4 控製轉移語句 103
3.6 函數 108
3.6.1 函數的定義與調用 108
3.6.2 函數參數和返迴值 110
3.6.3 函數參數名稱 113
3.6.4 函數類型 119
3.6.5 嵌套函數 122
3.7 閉包 122
3.7.1 閉包錶達式 123
3.7.2 尾隨閉包 126
3.7.3 值捕獲 128
3.7.4 閉包是引用類型 130
3.8 枚舉 130
3.8.1 枚舉語法 131
3.8.2 使用switch 語句匹配枚舉值 132
3.8.3 關聯值 133
3.8.4 原始值 135
3.9 類和結構體 136
3.9.1 類和結構體的對比 137
3.9.2 結構體和枚舉是值類型 139
3.9.3 類是引用類型 141
3.9.4 類和結構體的選擇 142
3.9.5 字符串、數組及字典的賦值和復製行為 143
第4章 初級語法 144
4.1 屬性 144
4.1.1 存儲屬性 144
4.1.2 計算屬性 147
4.1.3 屬性監察器 149
4.1.4 全局變量和本地變量 151
4.1.5 類型屬性 151
4.2 方法 155
4.2.1 實例方法 155
4.2.2 類型方法 160
4.3 下標 163
4.3.1 下標語法 163
4.3.2 下標用法 164
4.3.3 下標選項 164
4.4 繼承 166
4.4.1 定義一個基類 167
4.4.2 子類生成 168
4.4.3 重寫 169
4.4.4 防止重寫 173
4.5 構造 173
4.5.1 存儲屬性的初始賦值 173
4.5.2 自定義構造 174
4.5.3 默認構造器 178
4.5.4 值類型的構造器代理 179
4.5.5 類的繼承和構造 180
4.5.6 通過閉包或函數來設置屬性的默認值 190
4.6 析構 192
4.6.1 析構原理 192
4.6.2 析構實例 192
4.7 自動引用計數 194
4.7.1 ARC的工作原理 195
4.7.2 ARC實踐 195
4.7.3 類實例間的強引用環 196
4.7.4 解決類實例間的強引用環 199
4.7.5 閉包産生的強引用環 205
4.7.6 解決閉包産生的強引用環 207
4.8 可選鏈 210
4.8.1 可選鏈替代可選強製解析 210
4.8.2 為可選鏈定義模型類 211
4.8.3 通過可選鏈獲取屬性 213
4.8.4 通過可選鏈調用方法 214
4.8.5 使用可選鏈獲取下標 214
4.8.6 連接多層鏈 215
4.8.7 可選鏈中返迴可選類型的方法 216
4.9 類型轉換 217
4.9.1 定義一個類層次作為例子 217
4.9.2 類型檢查 218
4.9.3 嚮下轉換 219
4.9.4 Any和AnyObject的轉換 220
4.10 類型嵌套 222
4.10.1 類型嵌套實踐 223
4.10.2 引用嵌套類型 224
第5章 高級語法 225
5.1 擴展 225
5.1.1 擴展語法 225
5.1.2 計算屬性 226
5.1.3 構造器 227
5.1.4 方法 228
5.1.5 可變實例方法 229
5.1.6 下標 229
5.1.7 嵌套類型 230
5.2 協議 231
5.2.1 協議語法 231
5.2.2 屬性要求 232
5.2.3 方法要求 233
5.2.4 可變方法要求 234
5.2.5 協議作為類型 235
5.2.6 集閤中的協議類型 240
5.2.7 協議的繼承 241
5.2.8 協議閤成 242
5.2.9 檢查協議的一緻性 243
5.2.10 可選協議要求 245
5.3 泛型 247
5.3.1 泛型解決的問題 247
5.3.2 泛型函數 248
5.3.3 類型參數 249
5.3.4 命名類型參數 249
5.3.5 泛型類型 250
5.3.6 擴展泛型類型 252
5.3.7 類型約束 253
5.3.8 關聯類型 256
5.3.9 where子句 258
5.4 訪問控製 260
5.4.1 模塊和源文件 261
5.4.2 訪問級彆 261
5.4.3 訪問控製語法 262
5.4.4 自定義類型 263
5.4.5 子類 265
5.4.6 常量、變量、屬性和下標 266
5.4.7 協議 268
5.4.8 擴展 269
5.5 高級運算符 269
5.5.1 位運算符 270
5.5.2 溢齣運算符 274
5.5.3 優先級和結閤性 276
5.5.4 運算符函數 277
5.5.5 前置和後置運算符 278
5.5.6 組閤賦值運算符 279
5.5.7 比較運算符 280
5.5.8 自定義運算符 280
5.5.9 自定義中置運算符的優先級和結閤性 281
第6章 詞法參考 282
6.1 關於詞法參考 282
6.2 詞法結構 283
6.2.1 空白與注釋 283
6.2.2 標識符 283
6.2.3 關鍵字和標點符號 285
6.2.4 字麵量 286
6.2.5 運算符 290
6.3 類型 292
6.3.1 類型標注 292
6.3.2 類型標識符 293
6.3.3 元組類型 293
6.3.4 函數類型 294
6.3.5 數組類型 295
6.3.6 字典類型 296
6.3.7 可選類型 296
6.3.8 隱式解析可選類型 297
6.3.9 閤成協議 298
6.3.10 元類型 298
6.3.11 類型繼承語法 299
6.3.12 類型推斷 299
6.4 錶達式 300
6.4.1 前綴錶達式 300
6.4.2 二元錶達式 301
6.4.3 賦值錶達式 303
6.4.4 三元條件運算符 303
6.4.5 類型轉換運算符 304
6.4.6 主錶達式 305
6.4.7 後綴錶達式 310
6.5 語句 314
6.5.1 循環語句 315
6.5.2 分支語句 317
6.5.3 帶標簽的語句 320
6.5.4 控製傳遞語句 321
6.6 聲明 322
6.6.1 全局代碼 323
6.6.2 代碼塊 323
6.6.3 導入聲明 324
6.6.4 常量聲明 324
6.6.5 變量聲明 325
6.6.6 類和靜態變量屬性 327
6.6.7 類型彆名 328
6.6.8 函數聲明 328
6.6.9 枚舉聲明 332
6.6.10 結構體聲明 334
6.6.11 類聲明 335
6.6.12 協議聲明 336
6.6.13 協議構造器聲明 338
6.6.14 協議下標聲明 338
6.6.15 協議相關類型聲明 338
6.6.16 構造器聲明 339
6.6.17 析構器聲明 340
6.6.18 擴展聲明 340
6.6.19 下標聲明 341
6.6.20 運算符聲明 342
6.6.21 特徵聲明修飾符 343
6.6.22 訪問控製級彆 344
6.7 特徵 345
6.7.1 聲明特徵 345
6.7.2 Interface Builder使用的聲明特徵 348
6.7.3 類型特徵 348
6.8 模式 349
6.8.1 通配符模式 349
6.8.2 標識符模式 350
6.8.3 值綁定模式 350
6.8.4 元組模式 350
6.8.5 枚舉用例模式 351
6.8.6 類型轉換模式 352
6.8.7 錶達式模式 352
6.9 泛型形參和實參 353
6.9.1 泛型形參子句 353
6.9.2 where 子句 354
6.9.3 泛型參數子句 355
6.10 語法總結 356
6.10.1 語句(Statements) 356
6.10.2 泛型形參與實參(Generic Parameter and Arguments) 358
6.10.3 聲明(Declarations) 358
6.10.4 模式(Patterns) 364
6.10.5 特徵(Attributes) 365
6.10.6 錶達式(Expression) 365
6.10.7 詞法結構(Lexical Structure) 368
6.10.8 類型(Types) 372
第7章 使用Cocoa框架與ObjC 374
7.1 基本設置 374
7.1.1 建立你的Swift環境 374
7.1.2 理解Swift的導入過程 375
7.2 與ObjC API交互 376
7.2.1 初始化 376
7.2.2 訪問屬性 377
7.2.3 使用方法 377
7.2.4 id兼容性 378
7.2.5 使用nil 379
7.2.6 擴展 380
7.2.7 閉包 381
7.2.8 對象比較 381
7.2.9 Swift類型兼容性 381
7.2.10 Objective-C選擇器 382
7.3 以ObjC的行為寫Swift 383
7.3.1 繼承Objective-C的類 383
7.3.2 適配協議 384
7.3.3 編寫構造器和析構器 384
7.3.4 集成Interface Builder 384
7.3.5 指明屬性特性 386
7.3.6 實現核心數據管理對象的子類 386
7.4 使用Cocoa數據類型 386
7.4.1 字符串 387
7.4.2 數字 387
7.4.3 集閤類 388
7.4.4 Foundation數據類型 390
7.4.5 Foundation函數 390
7.4.6 Core Foundation 390
7.5 采用Cocoa設計模式 392
7.5.1 委托 392
7.5.2 錯誤報告 392
7.5.3 鍵值觀察 393
7.5.4 Target-Action 394
7.5.5 內省 394
7.6 與C API交互 395
7.6.1 基本類型 395
7.6.2 枚舉 396
7.6.3 指針 397
7.6.4 全局常量 401
7.6.5 預處理指令 401
7.7 與ObjC混編 402
7.7.1 混編概述 402
7.7.2 在同一個app target中進行代碼導入 403
7.7.3 在同一個framework target中導入代碼 404
7.7.4 導入外部框架 405
7.7.5 在Objective-C中使用Swift代碼 406
7.7.6 product模式命名 407
7.7.7 故障排除和提醒 407
7.8 遷移ObjC代碼至Swift 408
7.8.1 為你的Objective-C代碼遷移做好準備 408
7.8.2 遷移過程 408
7.8.3 技巧和提示 409
· · · · · · (
收起)