前言 1
第一部分 語言
第1章 Swift架構縱覽 11
1.1 基礎 11
1.2 萬物皆對象 12
1.3 對象類型的3種風格 14
1.4 變量 14
1.5 函數 15
1.6 Swift文件的結構 16
1.7 作用域與生命周期 19
1.8 對象成員 20
1.9 命名空間 20
1.10 模塊 21
1.11 實例 22
1.12 為何使用實例 24
1.13 self 26
1.14 隱私 27
1.15 設計 29
1.15.1 對象類型與API 29
1.15.2 實例創建、作用域與生命周期 31
1.15.3 小結 32
第2章 函數 34
2.1 函數參數與返迴值 34
2.1.1 Void返迴類型與參數 37
2.1.2 函數簽名 38
2.2 外部參數名 38
2.3 重載 41
2.4 默認參數值 42
2.5 可變參數 43
2.6 可忽略參數 44
2.7 可修改參數 44
2.8 函數中的函數 48
2.9 遞歸 49
2.10 將函數作為值 50
2.11 匿名函數 53
2.12 定義與調用 57
2.13 閉包 58
2.13.1 閉包是如何改善代碼的 59
2.13.2 返迴函數的函數 61
2.13.3 使用閉包設置捕獲變量 64
2.13.4 使用閉包保存捕獲的環境 64
2.14 柯裏化函數 66
第3章 變量與簡單類型 68
3.1 變量作用域與生命周期 68
3.2 變量聲明 69
3.3 計算初始化器 72
3.4 計算變量 73
3.5 setter觀察者 76
3.6 延遲初始化 77
3.7 內建簡單類型 79
3.7.1 Bool 80
3.7.2 數字 81
3.7.3 String 88
3.7.4 Character 93
3.7.5 Range 96
3.7.6 元組 98
3.7.7 Optional 102
第4章 對象類型 114
4.1 對象類型聲明與特性 114
4.1.1 初始化器 115
4.1.2 屬性 122
4.1.3 方法 125
4.1.4 下標 127
4.1.5 嵌套對象類型 128
4.1.6 實例引用 129
4.2 枚舉 131
4.2.1 帶有固定值的Case 132
4.2.2 帶有類型值的Case 133
4.2.3 枚舉初始化器 134
4.2.4 枚舉屬性 136
4.2.5 枚舉方法 137
4.2.6 為何使用枚舉 138
4.3 結構體 139
4.3.1 結構體初始化器、屬性與方法 139
4.3.2 將結構體作為命名空間 140
4.4 類 141
4.4.1 值類型與引用類型 142
4.4.2 子類與父類 146
4.4.3 類初始化器 151
4.4.4 類析構器 159
4.4.5 類屬性與方法 159
4.5 多態 161
4.6 類型轉換 164
4.7 類型引用 168
4.8 協議 172
4.8.1 為何使用協議 174
4.8.2 協議類型測試與轉換 176
4.8.3 聲明協議 177
4.8.4 可選協議成員 178
4.8.5 類協議 180
4.8.6 隱式必備初始化器 180
4.8.7 字麵值轉換 182
4.9 泛型 183
4.9.1 泛型聲明 185
4.9.2 類型約束 186
4.9.3 顯式特化 189
4.9.4 關聯類型鏈 190
4.9.5 附加約束 192
4.10 擴展 196
4.10.1 擴展對象類型 196
4.10.2 擴展協議 199
4.10.3 擴展泛型 202
4.11 保護類型 203
4.11.1 AnyObject 203
4.11.2 AnyClass 206
4.11.3 Any 207
4.12 集閤類型 208
4.12.1 Array 208
4.12.2 Dictionary 222
4.12.3 Set 227
第5章 流程控製與其他 232
5.1 流程控製 232
5.1.1 分支 233
5.1.2 循環 245
5.1.3 跳轉 250
5.2 運算符 261
5.3 隱私性 264
5.3.1 Private聲明 265
5.3.2 Public聲明 267
5.3.3 隱私性規則 267
5.4 內省 267
5.5 內存管理 269
5.5.1 弱引用 270
5.5.2 無主引用 272
5.5.3 匿名函數中的弱引用與無主引用 273
5.5.4 協議類型引用的內存管理 275
第二部分 IDE
第6章 Xcode項目剖析 279
6.1 新建項目 279
6.2 項目窗口 281
6.2.1 導航窗格 282
6.2.2 輔助窗格 288
6.2.3 編輯器 289
6.3 項目文件及其依賴 291
6.4 目標 293
6.4.1 構建階段 294
6.4.2 構建設置 296
6.4.3 配置 297
6.4.4 方案與目標 298
6.5 從項目到運行應用 300
6.5.1 構建設置 303
6.5.2 屬性列錶設置 303
6.5.3 nib文件 304
6.5.4 其他資源 305
6.5.5 代碼文件與應用啓動過程 307
6.5.6 框架與SDK 312
6.6 對項目內容進行重命名 314
第7章 nib管理 316
7.1 nib編輯器界麵概覽 317
7.1.1 文檔大綱 318
7.1.2 畫布 321
7.1.3 查看器與庫 323
7.2 nib加載 324
7.2.1 何時加載nib 325
7.2.2 手工加載nib 326
7.3 連接 328
7.3.1 插座變量 328
7.3.2 nib擁有者 330
7.3.3 自動配置nib 333
7.3.4 誤配置的插座變量 333
7.3.5 刪除插座變量 335
7.3.6 創建插座變量的其他方式 335
7.3.7 插座變量集閤 338
7.3.8 動作連接 339
7.3.9 創建動作的其他方式 340
7.3.10 誤配置的動作 342
7.3.11 nib之間的連接——不行! 342
7.4 nib實例的其他配置 343
第8章 文檔 346
8.1 文檔窗口 346
8.2 類文檔頁麵 349
8.3 示例代碼 351
8.4 快速幫助 352
8.5 符號 353
8.6 頭文件 354
8.7 互聯網資源 355
第9章 項目的生命周期 356
9.1 設備架構與條件代碼 356
9.1.1 嚮後兼容 357
9.1.2 設備類型 359
9.2 版本控製 360
9.3 編輯與代碼導航 362
9.3.1 自動補令 363
9.3.2 代碼片段 364
9.3.3 Fix-it與實時語法檢查 365
9.3.4 導航 366
9.3.5 查找 368
9.4 在模擬器中運行 369
9.5 調試 370
9.5.1 原始調試 370
9.5.2 Xcode調試器 372
9.6 測試 378
9.7 清理 383
9.8 在設備中運行 384
9.8.1 在沒有開發者計劃成員資格的情況下運行 386
9.8.2 獲取開發者計劃成員資格 387
9.8.3 獲取證書 387
9.8.4 獲取開發配置文件 389
9.8.5 運行應用 390
9.8.6 配置文件與設備管理 390
9.9 分析 391
9.9.1 儀錶盤 391
9.9.2 Instruments 392
9.10 本地化 394
9.10.1 本地化Info.plist 396
9.10.2 本地化nib文件 398
9.10.3 本地化代碼字符串 399
9.10.4 使用XML文件進行本地化 401
9.11 歸檔與發布 403
9.12 Ad Hoc發布 405
9.13 最後的準備 406
9.13.1 應用圖標 407
9.13.2 其他圖標 408
9.13.3 啓動圖片 408
9.13.4 屏幕截圖與視頻預覽 409
9.13.5 屬性列錶設置 410
9.14 嚮App Store提交應用 411
第三部分 Cocoa
第10章 Cocoa類 417
10.1 子類化 417
10.2 類彆與擴展 420
10.2.1 Swift如何使用擴展 420
10.2.2 你應該如何使用擴展 421
10.2.3 Cocoa如何使用類彆 421
10.3 協議 423
10.3.1 非正式協議 425
10.3.2 可選方法 425
10.4 Foundation類精講 427
10.4.1 常用的結構體與常量 427
10.4.2 NSString及相關類 428
10.4.3 NSDate及相關類 431
10.4.4 NSNumber 433
10.4.5 NSValue 434
10.4.6 NSData 435
10.4.7 相等與比較 435
10.4.8 NSIndexSet 437
10.4.9 NSArray與NSMutableArray 438
10.4.10 NSDictionary與NSMutableDictionary 440
10.4.11 NSSet及相關類 440
10.4.12 NSNull 442
10.4.13 不變與可變 442
10.4.14 屬性列錶 443
10.5 訪問器、屬性與鍵值編碼 443
10.5.1 Swift訪問器 445
10.5.2 鍵值編碼 446
10.5.3 鍵值編碼的使用 447
10.5.4 KVC與插座變量 448
10.5.5 鍵路徑 449
10.5.6 數組訪問器 450
10.6 NSObject揭秘 450
第11章 Cocoa事件 453
11.1 為何使用事件 453
11.2 子類化 454
11.3 通知 455
11.3.1 接收通知 456
11.3.2 取消注冊 458
11.3.3 發布通知 459
11.3.4 NSTimer 460
11.4 委托 461
11.4.1 Cocoa委托 461
11.4.2 實現委托 463
11.5 數據源 465
11.6 動作 465
11.7 響應器鏈 468
11.7.1 推遲職責 469
11.7.2 Nil-Targeted動作 470
11.8 鍵值觀測 471
11.9 事件泥潭 475
11.10 延遲執行 477
第12章 內存管理 480
12.1 Cocoa內存管理的原理 480
12.2 Cocoa內存管理的原則 481
12.3 ARC及其作用 482
12.4 Cocoa對象管理內存的方式 483
12.5 自動釋放池 484
12.6 實例屬性的內存管理 486
12.7 保持循環與弱引用 487
12.8 值得注意的內存管理情況 488
12.9 nib加載與內存管理 492
12.10 CFTypeRefs的內存管理 493
12.11 屬性的內存管理策略 495
12.12 調試內存管理的錯誤 497
第13章 對象間通信 499
13.1 實例化可見性 500
13.2 關係可見性 502
13.3 全局可見性 503
13.4 通知與KVO 504
13.5 模型-視圖-控製器 505
附錄A C、Objective-C與Swift 507
· · · · · · (
收起)