1.2.2 安裝輔助工具和文檔 6
1.3 第一個Swift程序 7
1.3.1 Swift程序入口 7
1.3.2 使用Playground工具 8
1.3.3 開發Swift項目 11
1.4 使用終端窗口編譯、運行Swift程序 13
1.4.1 使用swiftc編譯Swift程序 13
1.4.2 在早期版本的OS X平颱上編譯Swift程序 14
1.4.3 使用swift交互命令 15
1.5 熟悉Xcode 16
1.5.1 創建iOS項目 16
1.5.2 熟悉導航麵闆 17
1.5.3 熟悉檢查器麵闆 20
1.5.4 熟悉庫麵闆 21
1.5.5 使用Xcode的幫助係統 23
1.6 本章小結 26
第2章 Swift的基本數據類型 27
2.1 注釋 28
2.2 變量與常量 29
2.2.1 分隔符 29
2.2.2 標識符規則 31
2.2.3 Swift的關鍵字 31
2.2.4 聲明變量和常量 32
2.2.5 輸齣變量和常量 33
2.3 整型 34
2.4 浮點型 35
2.5 數值型之間的類型轉換 37
2.5.1 整型之間的轉換 37
2.5.2 浮點型與整型之間的轉換 38
2.6 布爾型 39
2.7 元組(tuple)類型 40
2.7.1 定義元組類型的變量 40
2.7.2 獲取元組中的元素值 40
2.7.3 為元組中的元素命名 41
2.8 可選類型 42
2.8.1 可選和nil 42
2.8.2 強製解析 43
2.8.3 可選綁定 44
2.8.4 隱式可選類型 44
2.9 類型彆名 45
2.10 字符和字符串 46
2.10.1 字符類型 46
2.10.2 字符串類型 47
2.10.3 字符串的可變性 49
2.10.4 字符串的基本操作 49
2.10.5 字符串比較 50
2.10.6 獲取字符串中字符的Unicode編碼 50
2.11 本章小結 51
第3章 運算符與錶達式 52
3.1 賦值運算符 53
3.2 算術運算符 54
3.3 溢齣運算符 57
3.3.1 值的上溢 57
3.3.2 值的下溢 58
3.3.3 除零溢齣 58
3.4 位運算符 59
3.5 擴展後的賦值運算符 61
3.6 範圍運算符 61
3.6.1 閉範圍運算符 61
3.6.2 半開範圍運算符 62
3.7 比較運算符 62
3.8 邏輯運算符 63
3.8.1 Swift的6個邏輯運算符 63
3.8.2 組閤邏輯與括號 64
3.9 三目運算符 65
3.10 nil閤並運算符 66
3.11 運算符的結閤性和優先級 67
3.12 本章小結 68
第4章 流程控製 69
4.1 順序結構 70
4.2 分支結構 70
4.2.1 if條件語句 70
4.2.2 switch分支語句 73
4.2.3 switch不存在隱式貫穿(fallthrough)和顯式貫穿 74
4.2.4 使用break結束switch 76
4.2.5 switch的範圍匹配 76
4.2.6 switch的元組匹配 77
4.2.7 case的值綁定 78
4.2.8 case的where子句 79
4.3 循環結構 80
4.3.1 while循環語句 80
4.3.2 do while循環語句 81
4.3.3 for循環 82
4.3.4 for-in循環 84
4.3.5 嵌套循環 85
4.4 控製循環結構 86
4.4.1 使用break結束循環 86
4.4.2 使用continue忽略本次循環的剩下語句 87
4.4.3 使用return結束方法 88
4.5 本章小結 89
第5章 集閤 90
5.1 數組 91
5.1.1 聲明和創建數組 91
5.1.2 使用數組 92
5.1.3 使用for-in遍曆數組 93
5.1.4 數組的可變性和數組的修改 94
5.1.5 多維數組 96
5.1.6 數組的應用舉例 99
5.2 字典 101
5.2.1 聲明和創建字典 102
5.2.2 使用字典 103
5.2.3 使用for-in遍曆字典 104
5.2.4 單獨使用字典的keys或values 104
5.2.5 字典的可變性和字典的修改 105
5.2.6 字典的應用舉例 106
5.3 集閤的復製 107
5.3.1 數組的復製 107
5.3.2 字典的復製 109
5.4 本章小結 110
第6章 函數和閉包 111
6.1 函數入門 112
6.1.1 定義和調用函數 112
6.1.2 函數返迴值 113
6.1.3 遞歸函數 115
6.2 函數的形參 116
6.2.1 外部形參名及其簡化形式 116
6.2.2 形參默認值 117
6.2.3 個數可變的形參 119
6.2.4 常量形參和變量形參 119
6.2.5 In-Out形參 120
6.3 函數類型 124
6.3.1 使用函數類型 124
6.3.2 使用函數類型作為形參類型 125
6.3.3 使用函數類型作為返迴值類型 126
6.4 函數重載 127
6.5 嵌套函數 129
6.6 嵌套函數與閉包 130
6.6.1 迴顧嵌套函數 130
6.6.2 使用閉包錶達式代替嵌套函數 131
6.7 閉包錶達式 132
6.7.1 調用閉包(使用閉包返迴值) 132
6.7.2 利用上下文推斷類型 133
6.7.3 省略return 133
6.7.4 省略形參名 134
6.7.5 尾隨閉包 134
6.8 捕獲上下文中的變量和常量 136
6.9 閉包是引用類型 137
6.10 本章小結 137
第7章 麵嚮對象(上) 139
7.1 Swift的麵嚮對象支持 140
7.1.1 麵嚮對象概述 140
7.1.2 Swift的麵嚮對象類型 140
7.2 枚舉 141
7.2.1 定義枚舉 141
7.2.2 枚舉值和switch語句 143
7.2.3 原始值 144
7.2.4 關聯值 145
7.3 類和結構體 147
7.3.1 定義結構體和類 147
7.3.2 創建實例 151
7.3.3 值類型與引用類型 152
7.3.4 引用類型的比較 154
7.3.5 self關鍵字 156
7.3.6 類和結構體的選擇 158
7.4 存儲屬性 159
7.4.1 實例存儲屬性與實例變量 159
7.4.2 結構體常量與實例屬性 160
7.4.3 延遲存儲屬性 160
7.5 計算屬性 161
7.5.1 定義計算屬性 162
7.5.2 setter方法簡化 164
7.5.3 隻讀的計算屬性 164
7.6 屬性觀察者 165
7.7 方法 167
7.7.1 方法的所屬性 167
7.7.2 將方法轉換為函數 168
7.7.3 方法的外部形參名 169
7.7.4 Swift方法的命名習慣 171
7.7.5 值類型的可變方法 172
7.7.6 屬性和方法的統一 174
7.8 下標 175
7.8.1 下標的基本用法 175
7.8.2 下標重載 178
7.9 可選鏈 180
7.9.1 使用可選鏈代替強製解析 180
7.9.2 使用可選鏈調用方法 182
7.9.3 使用可選鏈調用下標 183
7.10 類型屬性和類型方法 183
7.10.1 類型成員的修飾符 184
7.10.2 值類型的類型屬性 184
7.10.3 類的類型屬性 185
7.10.4 值類型的類型方法 186
7.10.5 類的類型方法 186
7.11 構造器 187
7.11.1 類和結構體的默認構造器 187
7.11.2 構造器的外部形參名 188
7.11.3 在構造過程中常量屬性是可修改的 190
7.11.4 使用閉包或函數為屬性設置初始值 191
7.11.5 值類型的構造器重載 192
7.12 可能失敗的構造器 194
7.12.1 結構體與可能失敗的構造器 194
7.12.2 枚舉與可能失敗的構造器 195
7.13 本章小結 196
第8章 麵嚮對象(下) 197
8.1 繼承 198
8.1.1 繼承的特點 198
8.1.2 重寫父類的方法 199
8.1.3 重寫父類的屬性 200
8.1.4 重寫屬性觀察者 201
8.1.5 重寫父類的下標 202
8.1.6 使用final防止重寫 203
8.2 類的構造與析構 204
8.2.1 類的指定構造器和便利構造器 205
8.2.2 類的構造器鏈 206
8.2.3 兩段式構造 208
8.2.4 構造器的繼承和重寫 212
8.2.5 類與可能失敗的構造器 215
8.2.6 可能失敗的構造器的傳播 216
8.2.7 重寫可能失敗的構造器 217
8.2.8 子類必須包含的構造器 219
8.2.9 析構器 220
8.3 多態 221
8.3.1 多態性 221
8.3.2 使用is運算符檢查類型 223
8.3.3 使用as運算符嚮下轉型 223
8.3.4 Any和AnyObject 226
8.4 嵌套類型 226
8.5 擴展 227
8.5.1 使用擴展添加屬性 228
8.5.2 使用擴展添加方法 230
8.5.3 使用擴展添加可變方法 231
8.5.4 使用擴展添加構造器 232
8.5.5 使用擴展添加下標 232
8.5.6 使用擴展添加嵌套類型 233
8.6 協議 233
8.6.1 規範、接口與協議語法 233
8.6.2 協議指定的屬性要求 235
8.6.3 協議指定的方法要求 238
8.6.4 協議指定的可變方法要求 240
8.6.5 協議指定的下標要求 241
8.6.6 協議指定的構造器要求 243
8.6.7 使用協議作為類型 245
8.6.8 閤成協議 246
8.6.9 通過擴展為已有的類型添加協議 247
8.6.10 唯類(Class-Only)協議 248
8.6.11 可選協議 249
8.6.12 輸齣實例和Printable協議 251
8.6.13 使用自定義類型作為字典的key 252
8.7 隱藏與封裝 255
8.7.1 理解封裝 255
8.7.2 訪問控製符 256
8.7.3 訪問控製語法 257
8.7.4 使用訪問權限定義類型 258
8.7.5 子類的訪問權限 260
8.7.6 常量、變量、屬性、下標的訪問權限 260
8.7.7 構造器的訪問權限 262
8.7.8 協議的訪問權限 262
8.7.9 擴展的訪問權限 262
8.7.10 類型彆名的訪問權限 263
8.8 Swift內存管理 263
8.8.1 理解自動引用計數(ARC) 263
8.8.2 強引用循環 265
8.8.3 使用弱引用解決強引用循環 267
8.8.4 使用無主引用解決強引用循環 269
8.8.5 閉包與對象的強引用循環 271
8.8.6 使用弱引用或無主引用解決閉包的強引用循環 272
8.9 Swift麵嚮對象語法總結 273
8.10 本章小結 274
第9章 泛型 275
9.1 泛型的作用 276
9.2 泛型函數 277
9.2.1 定義泛型函數 277
9.2.2 定義多個類型參數 278
9.3 泛型類型 280
9.3.1 定義泛型類型 280
9.3.2 從泛型類派生子類 281
9.3.3 擴展泛型類型 282
9.4 類型約束 283
9.5 關聯類型 285
9.5.1 使用關聯類型 285
9.5.2 擴展已有類型來確定關聯類型 287
9.6 where子句 287
9.7 本章小結 289
第10章 運算符函數 290
10.1 運算符重載 291
10.2 前置和後置運算符 293
10.3 擴展後的賦值運算符 295
10.4 比較運算符 295
10.5 自定義運算符 296
10.5.1 開發自定義運算符 297
10.5.2 自定義運算符的結閤性和優先級 298
10.6 本章小結 299
第11章 Foundation框架詳解 300
11.1 包裝類 301
11.1.1 它們不是包裝類 301
11.1.2 NSValue和NSNumber 302
11.2 字符串(NSString與NSMutableString) 303
11.2.1 NSString的常用功能 303
11.2.2 可變字符串(NSMutableString) 305
11.3 日期與時間 306
11.3.1 日期與時間(NSDate) 306
11.3.2 日期格式器(NSDateFormatter) 307
11.3.3 日曆(NSCalendar)與日期組件(NSDateComponents) 309
11.4 數組(NSArray與NSMutableArray) 310
11.4.1 NSArray的功能與用法 310
11.4.2 對集閤元素整體調用方法 313
11.4.3 對NSArray進行排序 314
11.4.4 使用枚舉器遍曆NSArray集閤元素 315
11.4.5 可變數組(NSMutableArray) 316
11.5 集閤(NSSet與NSMutableSet) 317
11.5.1 NSSet的功能與用法 317
11.5.2 NSSet判斷集閤元素重復的標準 320
11.5.3 NSMutableSet的功能與用法 323
11.5.4 NSCountedSet的功能與用法 324
11.6 有序集閤(NSOrderedSet與NSMutableOrderedSet) 325
11.7 字典(NSDictionary與NSMutableDictionary) 326
11.7.1 NSDictionary的功能與用法 327
11.7.2 對NSDictionary的key排序 330
11.7.3 對NSDictionary的key進行過濾 331
11.7.4 NSMutableDictionary的功能與用法 332
11.8 本章小結 333
第12章 使用Swift開發iOS應用 334
12.1 從iOS項目開始 335
12.1.1 iOS項目包含的文件 335
12.1.2 Interface Builder簡介 336
12.1.3 添加控件 338
12.1.4 修改控件屬性 339
12.1.5 UIView支持的屬性 340
12.1.6 UILabel支持的屬性 343
12.2 MVC 345
12.2.1 程序入口和應用程序代理 345
12.2.2 理解iOS的MVC 347
12.2.3 掌握UIViewController控製器 348
12.3 事件機製 350
12.3.1 程序獲取控件的兩種方式 350
12.3.2 事件處理的3種方式 356
12.4 代碼控製UI界麵 362
12.4.1 不使用界麵設計文件開發UI界麵 362
12.4.2 使用代碼創建UI界麵 364
12.4.3 自定義UI控件 366
12.5 本章小結 369
第13章 Objective-C與Swift混編 370
13.1 Swift調用Objective-C 371
13.1.1 創建Swift項目 371
13.1.2 添加Objective-C類 372
13.1.3 調用Objective-C類 374
13.2 Objective-C調用Swift 376
13.2.1 為Objective-C項目添加Swift類 376
13.2.2 調用Swift類 378
13.3 本章小結 379
第14章 俄羅斯方塊 380
14.1 俄羅斯方塊簡介 381
14.2 開發遊戲界麵 382
14.2.1 界麵布局設計 382
14.2.2 開發遊戲界麵控件 385
14.3 俄羅斯方塊的數據模型 387
14.3.1 定義數據模型 387
14.3.2 初始化遊戲狀態數據 388
14.4 實現遊戲邏輯 391
14.4.1 處理方塊掉落 391
14.4.2 處理方塊左移 396
14.4.3 處理方塊右移 397
14.4.4 處理方塊鏇轉 398
14.4.5 啓動遊戲 401
14.5 本章小結 402
· · · · · · (
收起)