從零開始學Swift

從零開始學Swift

《從零開始學Swift》 人民郵電出版社出版,作者關東升。

主要內容

本書基於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 本章小結

相關詞條

相關搜尋

熱門詞條

聯絡我們