主要內容
本書基於Swift 2.x,通過大量案例全面介紹蘋果平台的套用開發。全書共分5 部分,包括Swift 語法篇、Cocoa Touch 框架編程篇、混合編程篇、進階篇、項目實戰篇,囊括了開發工具介紹、語言基礎知識、編寫HelloWorld 程式,直至套用在App Store 上線的所有內容。此外,本書前20 章專門配有同步練習,以幫助讀者掌握所學知識。
作者簡介
關東升
國內著名iOS和Cocos技術作家、iOS技術顧問、Cocoszui有價值專家(CVP)、智捷課堂首席培訓專家、51CTO社區iOS技術顧問。
他精通iOS、Android和Windows及HTML5等移動開發技術,擅長套用和遊戲類項目開發,曾先後主持開發:大型網路遊戲《神農訣》的iOS和Android客戶端;國家農產品追溯系統的iPad客戶端;酒店預訂系統的iOS客戶端;金融系統的iOS、Windows及Android客戶端。與此同時,他長期為中國移動研究院、方正科技、大唐電信、中國石油、工商銀行、南方航空、惠普、東軟集團、NTT等企事業單位提供技術諮詢及員工培訓。
另著有:
《iOS開發指南》
《Swift開發指南》
《iOS感測器套用開發zui佳實踐》
《iOS網路編程與雲端套用zui佳實踐》
《iOS圖形圖像、動畫和多媒體編程技術zui佳實踐》
《品味移動設計》
《互動設計的藝術》
《iPhone與iPad開發實戰》
《Android開發案例驅動教程》
《Android網路遊戲開發實戰》
《Cocos2d-x實戰:C++卷》
《Cocos2d-x實戰:JS卷》
《Cocos2d-x實戰:Lua卷》
《Cocos2d-x實戰:JS卷——Cocos2d-JS開發》
《iOS實戰:感測器卷(Swift版)》
《iOS實戰:圖形圖像、動畫和多媒體卷(Swift版)》
《iOS實戰:入門與提高卷(Swift版)》
《iOS實戰:蘋果“生態圈”編程卷(Swift版)》
圖書目錄
目錄
第一部分 Swift語法篇
第1章 準備起航.. 2
1.1 本書約定.... 2
1.1.1 示例代碼約定.... 2
1.1.2 圖示約定.... 3
1.1.3 函式和方法簽名約定.... 4
1.1.4 承接上一行代碼約定.... 5
1.1.5 代碼行號約定.... 5
1.2 Swift開發工具.... 6
1.2.1 Xcode開發工具.... 6
1.2.2 AppCode開發工具.... 12
1.3 本章小結.... 13
1.4 同步練習.... 13
第2章 第一個Swift程式.. 14
2.1 使用REPL.. 14
2.1.1 啟動Swift REPL.. 14
2.1.2 使用Swift REPL.. 15
2.2 使用Playground.. 16
2.2.1 編程利器Playground.. 16
2.2.2 編寫HelloWorld程式.... 18
2.3 使用Web網站.... 21
2.4 通過Xcode創建OS X工程.... 22
2.4.1 創建OS X工程.... 22
2.4.2 編譯和運行.... 23
2.5 通過AppCode創建OS X工程.... 24
2.5.1 創建OS X工程.... 24
2.5.2 編譯和運行.... 25
2.6 使用swiftc命令.... 27
2.6.1 編譯.... 27
2.6.2 運行.... 28
2.7 代碼解釋.... 28
2.8 在Linux下編譯和運行Swift程式.... 29
2.9 本章小結.... 32
2.10 同步練習.... 32
第3章 Swift語法基礎.. 33
3.1 標識符和關鍵字.... 33
3.1.1 標識符.... 33
3.1.2 關鍵字.... 34
3.2 常量和變數.... 35
3.2.1 常量.... 35
3.2.2 變數.... 36
3.2.3 使用var還是let.. 36
3.3 注釋.... 37
3.4 表達式.... 38
3.5 本章小結.... 39
3.6 同步練習.... 39
第4章 運算符.. 41
4.1 算術運算符.... 41
4.1.1 一元運算符.... 41
4.1.2 二元運算符.... 41
4.1.3 算術賦值運算符.... 43
4.2 關係運算符.... 43
4.3 邏輯運算符.... 45
4.4 位運算符.... 46
4.5 其他運算符.... 47
4.6 本章小結.... 48
4.7 同步練習.... 48
第5章 Swift原生數據類型.. 50
5.1 Swift數據類型.... 50
5.2 整型.... 50
5.3 浮點型.... 51
5.4 數字表示方式.... 52
5.4.1 進制數字表示.... 52
5.4.2 指數表示.... 52
5.4.3 其他表示.... 53
5.5 數字類型之間的轉換.... 53
5.5.1 整型之間的轉換.... 53
5.5.2 整型與浮點型之間的轉換.... 54
5.6 布爾型.... 54
5.7 元組類型.... 54
5.8 可選類型.... 56
5.8.1 可選類型概念.... 56
5.8.2 可選類型值拆包.... 56
5.8.3 可選綁定.... 57
5.9 本章小結.... 57
5.10 同步練習.... 57
第6章 Swift原生字元串.. 59
6.1 字元.... 59
6.1.1 Unicode編碼.... 59
6.1.2 轉義符.... 60
6.2 創建字元串.... 61
6.3 可變字元串.... 61
6.3.1 字元串拼接.... 61
6.3.2 字元串插入、刪除和替換.... 62
6.4 字元串比較.... 63
6.4.1 大小和相等比較.... 63
6.4.2 前綴和後綴比較.... 64
6.5 本章小結.... 65
6.6 同步練習.... 65
第7章 控制語句.. 66
7.1 分支語句.... 66
7.1.1 if語句.... 66
7.1.2 switch語句.... 68
7.1.3 guard語句.... 69
7.2 循環語句.... 71
7.2.1 while語句.... 71
7.2.2 repeat-while語句.... 73
7.2.3 for語句.... 74
7.2.4 for-in語句.... 75
7.3 跳轉語句.... 76
7.3.1 break語句.... 76
7.3.2 continue語句.... 78
7.3.3 fallthrough語句.... 79
7.4 範圍與區間運算符.... 81
7.4.1 switch中使用區間運算符.... 81
7.4.2 for-in中使用區間運算符.... 82
7.5 值綁定.... 83
7.5.1 if中的值綁定.... 83
7.5.2 guard中的值綁定.... 84
7.5.3 switch中的值綁定.... 85
7.6 where語句.... 85
7.6.1 switch中使用where語句.... 86
7.6.2 for-in中使用where語句.... 86
7.6.3 guard中使用where語句.... 86
7.7 本章小結.... 87
7.8 同步練習.... 87
第8章 Swift原生集合類型.. 91
8.1 Swift中的數組集合.... 91
8.1.1 數組聲明和初始化.... 92
8.1.2 可變數組.... 93
8.1.3 數組遍歷.... 94
8.2 Swift中的字典集合.... 94
8.2.1 字典聲明與初始化.... 95
8.2.2 可變字典.... 96
8.2.3 字典遍歷.... 97
8.3 Swift中的Set集合.... 98
8.3.1 Set聲明和初始化.... 98
8.3.2 可變Set集合.... 99
8.3.3 Set集合遍歷.... 100
8.3.4 Set集合運算.... 101
8.4 本章小結.... 102
8.5 同步練習.... 102
第9章 函式.. 104
9.1 使用函式.... 104
9.2 傳遞參數.... 105
9.2.1 使用外部參數名.... 105
9.2.2 省略外部參數名.... 105
9.2.3 參數默認值.... 106
9.2.4 可變參數.... 106
9.2.5 參數的傳遞引用.... 107
9.3 函式返回值.... 107
9.3.1 無返回值函式.... 107
9.3.2 多返回值函式.... 108
9.4 函式類型.... 108
9.4.1 作為函式返回類型使用.... 109
9.4.2 作為參數類型使用.... 110
9.5 嵌套函式.... 111
9.6 本章小結.... 112
9.7 同步練習.... 112
第10章 閉包.. 115
10.1 回顧嵌套函式.... 115
10.2 閉包的概念.... 115
10.3 使用閉包表達式.... 116
10.3.1 類型推斷簡化.... 117
10.3.2 隱藏return關鍵字.... 117
10.3.3 省略參數名.... 118
10.3.4 使用閉包返回值.... 118
10.4 使用尾隨閉包.... 119
10.5 捕獲上下文中的變數和常量.... 120
10.6 本章小結.... 121
10.7 同步練習.... 121
第11章 Swift語言中的面向對象特性.. 123
11.1 面向對象概念和基本特徵.... 123
11.2 Swift中的面向對象類型.... 123
11.3 枚舉.... 124
11.3.1 成員值.... 124
11.3.2 原始值.... 126
11.3.3 相關值.... 127
11.4 結構體與類.... 128
11.4.1 類和結構體定義.... 128
11.4.2 再談值類型和引用類型.... 129
11.4.3 引用類型的比較.... 131
11.4.4 運算符重載.... 132
11.5 類型嵌套.... 133
11.6 可選鏈.... 134
11.6.1 可選鏈的概念.... 134
11.6.2 使用問號(?)和感嘆號(!).... 136
11.7 訪問限定.... 136
11.7.1 訪問範圍.... 137
11.7.2 訪問級別.... 138
11.7.3 使用訪問級別最佳實踐.... 138
11.8 選擇類還是結構體最佳實踐.... 140
11.8.1 類和結構體的異同.... 141
11.8.2 選擇的原則.... 141
11.9 本章小結.... 142
11.10 同步練習.... 142
第12章 屬性與下標.. 146
12.1 存儲屬性.... 146
12.1.1 存儲屬性概念.... 146
12.1.2 延遲存儲屬性.... 147
12.2 計算屬性.... 148
12.2.1 計算屬性的概念.... 148
12.2.2 唯讀計算屬性.... 150
12.2.3 結構體和枚舉中的計算屬性.... 150
12.3 屬性觀察者.... 151
12.4 靜態屬性.... 153
12.4.1 結構體靜態屬性.... 154
12.4.2 枚舉靜態屬性.... 155
12.4.3 類靜態屬性.... 156
12.5 使用下標.... 156
12.5.1 下標概念.... 157
12.5.2 示例:二維數組.... 157
12.6 本章小結.... 159
12.7 同步練習.... 159
第13章 方法.. 160
13.1 實例方法.... 160
13.1.1 使用規範的命名.... 160
13.1.2 結構體和枚舉方法變異.... 163
13.2 靜態方法.... 165
13.2.1 結構體靜態方法.... 165
13.2.2 枚舉靜態方法.... 166
13.2.3 類靜態方法.... 166
13.3 本章小結.... 167
13.4 同步練習.... 167
第14章 構造與析構.. 168
14.1 構造函式.... 168
14.1.1 默認構造函式.... 168
14.1.2 構造函式與存儲屬性初始化.... 169
14.1.3 使用外部參數名.... 170
14.2 構造函式重載.... 172
14.2.1 構造函式重載概念.... 172
14.2.2 構造函式代理.... 172
14.2.3 類構造函式橫向代理.... 173
14.3 析構函式.... 174
14.4 本章小結.... 176
14.5 同步練習.... 176
第15章 類繼承.. 178
15.1 從一個示例開始.... 178
15.2 構造函式繼承.... 179
15.2.1 構造函式調用規則.... 179
15.2.2 構造過程安全檢查.... 180
15.2.3 構造函式繼承.... 184
15.3 重寫.... 186
15.3.1 重寫實例屬性.... 186
15.3.2 重寫靜態屬性.... 188
15.3.3 重寫實例方法.... 189
15.3.4 重寫靜態方法.... 190
15.3.5 下標重寫.... 190
15.3.6 使用final關鍵字.... 192
15.4 類型檢查與轉換.... 193
15.4.1 使用is操作符.... 194
15.4.2 使用as操作符.... 195
15.4.3 使用Any和AnyObject類型.... 197
15.5 本章小結.... 197
15.6 同步練習.... 198
第16章 擴展.. 200
16.1 “輕量級”繼承機制.... 200
16.2 聲明擴展.... 200
16.3 擴展計算屬性.... 201
16.4 擴展方法.... 202
16.5 擴展構造函式.... 203
16.5.1 值類型擴展構造函式.... 203
16.5.2 引用類型擴展構造函式.... 204
16.6 擴展下標.... 204
16.7 本章小結.... 205
16.8 同步練習.... 205
第17章 協定.. 206
17.1 協定概念.... 206
17.2 協定.... 206
17.3 協定方法.... 207
17.3.1 協定實例方法.... 207
17.3.2 協定靜態方法.... 208
17.3.3 協定變異方法.... 208
17.4 協定屬性.... 210
17.4.1 協定實例屬性.... 210
17.4.2 協定靜態屬性.... 211
17.5 面向協定編程.... 211
17.5.1 協定類型.... 212
17.5.2 協定的繼承.... 214
17.5.3 協定擴展.... 215
17.5.4 協定的合成.... 216
17.5.5 擴展中遵從協定.... 217
17.5.6 面向協定編程示例:表視圖中使用
擴展協定.... 217
17.6 本章小結.... 220
17.7 同步練習.... 220
第18章 泛型.. 222
18.1 一個問題的思考.... 222
18.2 泛型函式.... 222
18.2.1 使用泛型函式.... 223
18.2.2 多類型參數.... 223
18.3 泛型類型.... 223
18.4 泛型擴展.... 225
18.5 本章小結.... 226
18.6 同步練習.... 226
第19章 Swift記憶體管理.. 227
19.1 Swift記憶體管理概述.... 227
19.1.1 引用計數.... 227
19.1.2 示例:Swift自動引用計數.... 228
19.2 強引用循環.... 229
19.3 打破強引用循環.... 233
19.3.1 弱引用.... 233
19.3.2 無主引用.... 236
19.4 閉包中的強引用循環.... 238
19.4.1 一個閉包中的強引用循環示例.... 238
19.4.2 解決閉包強引用循環.... 239
19.5 本章小結.... 241
19.6 同步練習.... 241
第20章 錯誤處理.. 243
20.1 Cocoa錯誤處理模式.... 243
20.2 do-try-catch錯誤處理模式.... 244
20.2.1 捕獲錯誤.... 244
20.2.2 錯誤類型.... 244
20.2.3 聲明拋出錯誤.... 245
20.2.4 在函式或方法中拋出錯誤.... 245
20.2.5 try?和try!的使用區別.... 246
20.3 示例:MyNotes套用數據持久層實現.... 247
20.3.1 MyNotes套用介紹.... 247
20.3.2 MyNotes套用數據持久層設計.... 248
20.3.3 實現Note實體類.... 248
20.3.4 NoteDAO代碼實現.... 249
20.3.5 使用defer語句釋放資源.... 250
20.3.6 測試示例.... 251
20.4 本章小結.... 252
20.5 同步練習.... 252
第21章 Swift編碼規範.. 253
21.1 命名規範.... 253
21.2 注釋規範.... 255
21.2.1 檔案注釋.... 255
21.2.2 文檔注釋.... 255
21.2.3 代碼注釋.... 256
21.2.4 使用地標註釋.... 257
21.3 聲明.... 259
21.3.1 變數或常量聲明.... 259
21.3.2 屬性聲明.... 260
21.4 代碼排版.... 260
21.4.1 空行.... 260
21.4.2 空格.... 261
21.4.3 斷行.... 262
21.4.4 縮進.... 263
21.5 本章小結.... 265
第二部分 Cocoa Touch框架編程篇
第22章 Foundation框架.. 268
22.1 數字類NSNumber.. 268
22.1.1 獲得NSNumber對象.... 268
22.1.2 比較NSNumber對象.... 270
22.1.3 數字格式化.... 271
22.1.4 NSNumber與Swift原生數字類型之間的橋接.... 272
22.2 字元串類.... 273
22.2.1 NSString類.... 273
22.2.2 NSMutableString類.... 275
22.2.3 NSString與String之間的橋接.... 277
22.3 數組類.... 278
22.3.1 NSArray類.... 278
22.3.2 NSMutableArray類.... 279
22.3.3 NSArray與Swift原生數組之間的橋接.... 280
22.4 字典類.... 281
22.4.1 NSDictionary類.... 281
22.4.2 NSMutableDictionary類.... 282
22.4.3 NSDictionary與Swift原生字典之間的橋接.... 283
22.5 NSSet集合類.... 283
22.5.1 NSSet類.... 284
22.5.2 NSMutableSet類.... 284
22.5.3 NSSet與Swift原生Set之間的橋接.... 285
22.6 檔案管理.... 286
22.6.1 訪問目錄.... 286
22.6.2 目錄操作.... 287
22.6.3 檔案操作.... 288
22.7 位元組快取.... 289
22.7.1 NSData和NSMutableData類.... 289
22.7.2 示例:Base64解碼與編碼.... 291
22.8 日期與時間.... 292
22.8.1 使用NSDate類.... 292
22.8.2 日期時間格式化.... 294
22.8.3 使用NSCalendar和NSDateComponents類.... 295
22.8.4 示例:時區轉換.... 296
22.9 使用謂詞NSPredicate過濾數據.... 297
22.9.1 一個過濾員工花名冊的示例.... 298
22.9.2 使用謂詞NSPredicate.. 300
22.9.3 NSPrdicate與集合.... 300
22.9.4 格式說明符.... 301
22.9.5 運算符.... 302
22.10 使用正則表達式.... 304
22.10.1 在NSPredicate中使用正則表達式.... 305
22.10.2 使用NSRegularExpression.. 305
22.10.3 示例:日期格式轉換.... 307
22.11 本章小結.... 309
第23章 iOS開發基礎.. 310
23.1 iOS介紹.... 310
23.2 第一個iOS套用:HelloWorld.. 310
23.2.1 創建工程.... 311
23.2.2 Xcode中的iOS工程模板.... 316
23.2.3 程式剖析.... 317
23.3 iOS API簡介.... 319
23.4 本章小結.... 319
第24章 Core Foundation框架.. 320
24.1 數據類型映射.... 320
24.2 記憶體管理.... 321
24.2.1 Objective-C的MRC記憶體管理.... 321
24.2.2 對象所有權.... 322
24.2.3 記憶體託管對象.... 323
24.2.4 記憶體非託管對象.... 324
24.3 本章小結.... 324
第25章 Cocoa Touch設計模式及套用.. 325
25.1 單例模式.... 325
25.1.1 問題提出.... 325
25.1.2 解決方案.... 325
25.2 目標與動作.... 326
25.2.1 問題提出.... 326
25.2.2 解決方案.... 327
25.3 輸出口.... 331
25.3.1 問題提出.... 331
25.3.2 解決方案.... 331
25.4 選擇器.... 334
25.4.1 問題提出.... 334
25.4.2 解決方案.... 334
25.4.3 示例:使用定時器變換視圖背景.... 335
25.5 委託與數據源.... 337
25.5.1 問題提出.... 337
25.5.2 委託解決方案.... 339
25.5.3 數據源解決方案.... 343
25.6 通知機制.... 346
25.6.1 問題提出.... 346
25.6.2 解決方案.... 346
25.6.3 示例:關閉和打開鍵盤.... 347
25.7 MVC模式.... 348
25.7.1 MVC模式概述.... 348
25.7.2 Cocoa Touch中的MVC模式.... 349
25.8 回響者鏈與觸摸事件.... 351
25.8.1 回響者對象與回響鏈.... 351
25.8.2 觸摸事件.... 352
25.9 本章小結.... 357
第26章 UIKit框架.. 358
26.1 視圖控制器.... 358
26.1.1 與導航相關的視圖控制器.... 358
26.1.2 視圖控制器的生命周期.... 358
26.2 視圖與UIView.. 360
26.2.1 UIView繼承層次結構.... 360
26.2.2 視圖分類.... 362
26.2.3 套用界面的構建層次.... 362
26.3 界面構建技術.... 363
26.3.1 使用故事板.... 363
26.3.2 使用XIB檔案.... 365
26.3.3 使用代碼.... 368
26.4 開關控制項.... 370
26.5 滑塊控制項.... 371
26.6 分段控制項.... 373
26.7 工具列.... 374
26.8 導航欄.... 376
26.9 表視圖.... 379
26.9.1 表視圖組成.... 379
26.9.2 單元格組成和樣式.... 380
26.9.3 示例:純代碼創建簡單表視圖.... 381
26.10 本章小結.... 386
第三部分 混合編程篇
第27章 Swift與Objective-C混合編程.. 388
27.1 選擇語言.... 388
27.2 檔案擴展名.... 388
27.3 Swift與Objective-C API映射.... 388
27.3.1 構造函式映射.... 389
27.3.2 方法名映射.... 391
27.4 同一套用目標中的混合編程.... 393
27.4.1 什麼是目標.... 394
27.4.2 Swift調用Objective-C.. 396
27.4.3 Objective-C調用Swift. 399
27.5 同一框架目標中的混合編程.... 402
27.5.1 程式庫和框架.... 402
27.5.2 Swift調用Objective-C.. 404
27.5.3 測試框架目標.... 407
27.5.4 Objective-C調用Swift. 410
27.6 本章小結.... 413
第28章 Swift與C/C++混合編程.. 414
28.1 數據類型映射.... 414
28.1.1 C語言基本數據類型.... 414
28.1.2 C語言指針類型.... 415
28.2 套用目標中的混合編程.... 419
28.2.1 Swift調用C API. 419
28.2.2 Swift調用C++API. 421
28.3 框架目標中的混合編程.... 425
28.3.1 同一框架目標中Swift調用C或C++ API. 425
28.3.2 Swift調用第三方庫中的C或C++ API. 428
28.4 示例:用SQLite嵌入式資料庫實現MyNotes數據持久層.... 430
28.4.1 Note實體類代碼.... 430
28.4.2 創建表.... 431
28.4.3 插入數據.... 432
28.4.4 查詢數據.... 434
28.4.5 套用沙箱目錄.... 435
28.4.6 表示層開發.... 436
28.5 本章小結.... 440
第四部分 進 階 篇
第29章 程式調試.. 442
29.1 Xcode調試工具.... 442
29.1.1 調試功能.... 442
29.1.2 輸出視窗.... 443
29.1.3 變數查看視窗.... 444
29.2 設定和查看斷點.... 445
29.2.1 斷點設定.... 445
29.2.2 管理斷點.... 446
29.3 使用Xcode中的Instruments工具.... 447
29.3.1 跟蹤記憶體使用.... 447
29.3.2 記憶體泄漏查找.... 449
29.4 iOS真機調試.... 453
29.4.1 Xcode設定.... 453
29.4.2 設備設定.... 455
29.5 本章小結.... 456
第30章 並發編程.. 457
30.1 並發相關概念.... 457
30.1.1 CPU與並發執行.... 457
30.1.2 進程與執行緒.... 457
30.2 GCD技術.... 457
30.2.1 GCD概念.... 458
30.2.2 調度佇列.... 458
30.3 GCD示例.... 458
30.3.1 主執行緒阻塞問題.... 458
30.3.2 使用GCD解決主執行緒阻塞.... 460
30.4 GCD與單例模式.... 460
30.5 本章小結.... 461
第31章 SpriteKit遊戲引擎.. 462
31.1 移動平台遊戲引擎介紹.... 462
31.2 第一個SpriteKit遊戲.... 462
31.2.1 創建工程.... 462
31.2.2 工程剖析.... 465
31.3 一切都是節點.... 468
31.3.1 節點“家族”.... 469
31.3.2 節點樹.... 469
31.3.3 節點中重要的方法.... 470
31.3.4 節點中重要的屬性.... 470
31.4 精靈.... 471
31.4.1 精靈類SKSpriteNode.. 471
31.4.2 示例:沙漠英雄場景.... 473
31.4.3 使用紋理圖集性能最佳化.... 478
31.5 場景切換.... 481
31.5.1 場景切換方法.... 481
31.5.2 場景過渡動畫.... 481
31.5.3 示例:沙漠英雄場景切換.... 481
31.6 動作.... 484
31.6.1 常用動作.... 484
31.6.2 組合動作.... 487
31.6.3 示例:幀動畫實現.... 491
31.7 粒子系統.... 493
31.7.1 粒子系統屬性.... 494
31.7.2 內置粒子系統模板.... 495
31.8 遊戲音樂與音效.... 499
31.8.1 音頻檔案介紹.... 499
31.8.2 iOS和OS X平台音頻最佳化.... 499
31.8.3 背景音樂.... 500
31.8.4 3D音效.... 501
31.9 物理引擎.... 502
31.9.1 物理引擎核心概念.... 502
31.9.2 物理引擎中的物體.... 503
31.9.3 接觸與碰撞.... 504
31.10 本章小結.... 507
第五部分 項目實戰篇
第32章 項目實戰:基於分層架構的多版本iPhone計算器套用.. 510
32.1 套用分析與設計.... 510
32.1.1 套用概述.... 510
32.1.2 需求分析.... 510
32.1.3 原型設計.... 511
32.2 分層架構設計.... 511
32.2.1 低耦合套用架構.... 511
32.2.2 詳細設計.... 512
32.2.3 分層架構設計有多種模式.... 514
32.2.4 選擇語言.... 514
32.3 基於同一工程同一目標純Swift的實現.... 515
32.3.1 創建工程.... 515
32.3.2 業務邏輯層開發.... 516
32.3.3 表示層開發.... 520
32.4 基於同一工程同一目標Swift調用Objective-C的實現.... 531
32.4.1 在Swift工程中添加Objective-C類.... 531
32.4.2 Objective-C實現業務邏輯層.... 532
32.5 基於同一工程不同目標Swift調用Objective-C的實現.... 534
32.5.1 添加業務邏輯層目標.... 535
32.5.2 暴露的頭檔案CalcLogic.h.. 535
32.5.3 修改表示層.... 536
32.6 基於同一工作空間不同工程下Swift調用Objective-C的實現.... 536
32.6.1 創建工作空間.... 537
32.6.2 暴露頭檔案CalcLogic.h.. 537
32.6.3 修改表示層.... 537
32.7 本章小結.... 537
第33章 遊戲App實戰:《迷失航線》.. 538
33.1 《迷失航線》遊戲分析與設計.... 538
33.1.1 《迷失航線》故事背景.... 538
33.1.2 需求分析.... 538
33.1.3 原型設計.... 539
33.1.4 遊戲腳本.... 540
33.2 任務1:遊戲工程的創建與初始化.... 540
33.2.1 疊代1.1:創建工程.... 540
33.2.2 疊代1.2:自定義類型維護.... 540
33.2.3 疊代1.3:添加資源檔案.... 543
33.3 任務2:創建Loading場景.... 543
33.3.1 疊代2.1:設計場景.... 544
33.3.2 疊代2.2:Loading動畫.... 545
33.3.3 疊代2.3:預處理載入紋理.... 545
33.4 任務3:創建Home場景.... 546
33.4.1 疊代3.1:設計場景.... 546
33.4.2 疊代3.2:實現代碼.... 547
33.5 任務4:創建設定場景.... 549
33.5.1 疊代4.1:設計場景.... 550
33.5.2 疊代4.2:實現代碼.... 550
33.6 任務5:創建幫助場景.... 552
33.6.1 疊代5.1:設計場景.... 553
33.6.2 疊代5.2:實現代碼.... 553
33.7 任務6:實現遊戲場景.... 554
33.7.1 疊代6.1:設計場景.... 555
33.7.2 疊代6.2:創建敵人精靈.... 556
33.7.3 疊代6.3:創建玩家飛機精靈.... 560
33.7.4 疊代6.4:創建子彈精靈.... 560
33.7.5 疊代6.5:初始化遊戲場景.... 561
33.7.6 疊代6.6:玩家移動飛機.... 565
33.7.7 疊代6.7:遊戲循環與任務調度.... 566
33.7.8 疊代6.8:遊戲場景選單實現.... 566
33.7.9 疊代6.9:玩家飛機發射子彈.... 568
33.7.10 疊代6.1:子彈與敵人的碰撞檢測.... 569
33.7.11 疊代6.11:玩家飛機與敵人的碰撞檢測.... 571
33.8 任務7:遊戲結束場景.... 573
33.8.1 疊代7.1:設計場景.... 573
33.8.2 疊代7.2:實現代碼.... 574
33.9 本章小結.... 575
第34章 《迷失航線》遊戲上架蘋果AppStore. 576
34.1 蘋果App Store. 576
34.2 還有“最後一公里”.... 577
34.2.1 添加圖示.... 577
34.2.2 添加啟動界面.... 579
34.2.3 修改發布產品屬性.... 581
34.3 為發布進行編譯.... 582
34.3.1 創建開發者證書.... 583
34.3.2 創建App ID... 587
34.3.3 創建描述檔案.... 589
34.3.4 發布編譯.... 593
34.4 發布上架.... 594
34.4.1 創建套用.... 595
34.4.2 套用定價.... 597
34.4.3 基本信息輸入.... 597
34.4.4 上傳套用.... 601
34.4.5 提交審核.... 603
34.5 審核不通過的常見原因.... 604
34.5.1 功能問題.... 604
34.5.2 用戶界面問題.... 604
34.5.3 商業問題.... 605
34.5.4 不當內容.... 605
34.5.5 其他問題.... 605
34.6 本章小結