內容簡介
本書基於Swift 3.x,通過大量案例全面介紹蘋果平台的套用開發。全書共分5部分,diyi部分介紹了Swift的一些基礎知識,第 二部分介紹了基於Swift語言的中高 級內容,第三部分主要介紹了Swift與Objective-C/C/C++的混合編程等相關問題,第四部分介紹了基於Swift語言的2D遊戲引擎技術,第五部分詳細介紹了一個遊戲App的開發過程。
圖書目錄
第 1章 準備起航
1.1 本書約定
1.1.1 示例代碼約定
1.1.2 圖示約定
1.1.3 函式和方法簽名約定
1.1.4 承接上一行代碼約定
1.1.5 代碼行號約定
1.2 Swift開發工具
1.2.1 Xcode開發工具
1.2.2 AppCode開發工具
1.3 本章小結
1.4 同步練習
第 2章 第 一個SWIFT程式
2.1 使用REPL
2.1.1 啟動Swift REPL
2.1.2 使用Swift REPL
2.2 使用Playground
2.2.1 編程利器Playground
2.2.2 編寫HelloWorld程式
2.3 通過Xcode創建macOS工程
2.3.1 創建macOS工程
2.3.2 編譯和運行
2.4 使用swiftc命令
2.4.1 編譯
2.4.2 運行
2.5 代碼解釋
2.6 本章小結
2.10 同步練習
第3章 SWIFT語法基礎
3.1 標識符和關鍵字
3.1.1 標識符
3.1.2 關鍵字
3.2 常量和變數
3.2.1 常量
3.2.2 變數
3.2.3 使用var還是let
3.3 注釋
3.4 表達式
3.5 本章小結
3.6 同步練習
第4章 運算符
4.1 算術運算符
4.1.1 一元運算符
4.1.2 二元運算符
4.1.3 算術賦值運算符
4.2 關係運算符
4.3 邏輯運算符
4.4 位運算符
4.5 其他運算符
4.6 本章小結
4.7 同步練習
第5章 SWIFT原生數據類型
5.1 Swift數據類型
5.2 整型
5.3 浮點型
5.4 數字表示方式
5.4.1 進制數字表示
13.3 靜態方法
13.3.1 結構體靜態方法
13.3.2 枚舉靜態方法
13.3.3 類靜態方法
13.4 本章小結
13.5 同步練習
第 14章 構造與析構
14.1 構造函式
14.1.1 默認構造函式
14.1.2 構造函式與存儲屬性初始化
14.1.3 使用參數標籤
14.2 構造函式重載
14.2.1 構造函式重載概念
14.2.2 結構體構造函式代理
14.2.3 類構造函式橫向代理
14.3 析構函式
14.4 本章小結
14.5 同步練習
第 15章 類繼承
15.1 從一個示例開始
15.2 構造函式繼承
15.2.1 構造函式調用規則
15.2.2 構造過程安全檢查
15.2.3 構造函式繼承
15.3 重寫
15.3.1 重寫實例屬性
15.3.2 重寫靜態屬性
15.3.3 重寫實例方法
15.3.4 重寫靜態方法
15.3.5 下標重寫
15.3.6 使用final關鍵字
15.4 類型檢查與轉換
15.4.1 使用is進行類型檢查
15.4.2 使用as、as!和as 進行類型轉換
15.4.3 使用AnyObject和Any類型
15.5 本章小結
15.6 同步練習
第 16章 擴展
16.1 “輕量級”繼承機制
16.2 聲明擴展
16.3 擴展計算屬性
16.4 擴展方法
16.5 擴展構造函式
16.5.1 值類型擴展構造函式
16.5.2 引用類型擴展構造函式
16.6 擴展下標
16.7 本章小結
16.8 同步練習
第 17章 協定
17.1 協定概念
17.2 協定定義和遵從
17.3 協定方法
17.3.1 協定實例方法
17.3.2 協定靜態方法
17.3.3 協定可變方法
17.4 協定屬性
17.4.1 協定實例屬性
17.4.2 協定靜態屬性
17.5 面向協定編程
17.5.1 協定類型
17.5.2 協定的繼承
17.5.3 協定擴展
17.5.4 協定的合成
17.5.5 擴展中遵從協定
17.6 面向協定編程示例:表視圖中使用擴展協定
17.7 本章小結
17.8 同步練習
第 18章 泛型
18.1 一個問題的思考
18.2 泛型函式
18.2.1 使用泛型函式
18.2.2 多類型參數
18.3 泛型類型
18.4 泛型擴展
18.5 本章小結
18.6 同步練習
第 19章 SWIFT編碼規範
19.1 命名規範
19.2 注釋規範
19.2.1 檔案注釋
19.2.2 文檔注釋
19.2.3 代碼注釋
19.2.4 使用地標註釋
19.3 聲明
19.3.1 變數或常量聲明
19.3.2 屬性聲明
19.4 代碼排版
19.4.1 空行
19.4.2 空格
19.4.3 斷行
19.4.4 縮進
19.5 本章小結
19.6 同步練習
第 20章 SWIFT記憶體管理
20.1 Swift記憶體管理概述
20.1.1 引用計數
20.1.2 示例:Swift自動引用計數
20.2 強引用循環
20.3 打破強引用循環
20.3.1 弱引用
20.3.2 無主引用
20.4 閉包中的強引用循環
20.4.1 一個閉包中的強引用循環示例
20.4.2 解決閉包強引用循環
20.5 本章小結
20.6 同步練習
第 21章 錯誤處理
21.1 Cocoa錯誤處理模式
21.2 do-try-catch錯誤處理模式
21.2.1 捕獲錯誤
21.2.2 錯誤類型
21.2.3 聲明拋出錯誤
21.2.4 在函式或方法中拋出錯誤
21.2.5 try 和try!的使用區別
21.3 案例:MyNotes套用數據持久層實現
21.3.1 MyNotes套用介紹
21.3.2 MyNotes套用數據持久層設計
21.3.3 實現Note實體類
21.3.4 NoteDAO代碼實現
21.3.5 使用defer語句釋放資源
21.3.6 測試示例
21.4 本章小結
21.5 同步練習
第 22章 FOUNDATION框架
22.1 數字類NSNumber
22.1.1 獲得NSNumber對象
22.1.2 比較NSNumber對象
22.1.3 數字格式化
22.1.4 NSNumber與Swift原生數字類型之間的橋接
22.2 字元串類
22.2.1 NSString類
22.2.2 NSMutableString類
22.2.3 NSString與String之間的橋接
22.3 數組類
22.3.1 NSArray類
22.3.2 NSMutableArray類
22.3.3 NSArray與Swift原生數組之間的橋接
22.4 字典類
22.4.1 NSDictionary類
22.4.2 NSMutableDictionary類
22.4.3 NSDictionary與Swift原生字典之間的橋接
22.5 NSSet集合類
22.5.1 NSSet類
22.5.2 NSMutableSet類
22.5.3 NSSet與Swift原生Set之間的橋接
22.6 檔案管理
22.6.1 訪問
22.6.2 操作
22.6.3 檔案操作
22.7 位元組快取
22.7.1 訪問位元組快取
22.7.2 示例:Base64解碼與編碼
22.8 日期與時間
22.8.1 NSDate和Date
22.8.2 日期時間格式化
22.8.3 NSCalendar、Calendar、NSDateComponents和DateComponents
22.8.4 示例:時區轉換
22.9 使用謂詞NSPredicate過濾數據
22.9.1 一個過濾員工花名冊的示例
22.9.2 使用謂詞NSPredicate
22.9.3 NSPrdicate與集合
22.9.4 格式說明符
22.9.5 運算符
22.10 使用正則表達式
22.10.1 在NSPredicate中使用正則表達式
22.10.2 使用NSRegularExpression
22.10.3 示例:日期格式轉換
22.11 本章小結
第 23章 SWIFT與OBJECTIVE-C混合編程
23.1 選擇語言
23.2 檔案擴展名
23.3 Swift與Objective-C API映射
23.3.1 構造函式映射
23.3.2 方法名映射
23.4 同一套用目標中的混合編程
23.4.1 什麼是目標
23.4.2 Swift調用Objective-C
23.4.3 Objective-C調用Swift
23.5 同一框架目標中的混合編程
23.5.1 程式庫和框架
23.5.2 Swift調用Objective-C
23.5.3 測試框架目標
23.5.4 Objective-C調用Swift
23.6 本章小結
第 24章 SWIFT與C/C++混合編程
24.1 數據類型映射
24.1.1 C語言基本數據類型
24.1.2 C語言指針類型
24.2 套用目標中的混合編程
24.2.1 Swift調用C API
24.2.2 Swift調用C++ API
24.3 框架目標中的混合編程
24.3.1 同一框架目標中Swift調用C或C++ API
24.3.2 Swift調用第三方庫中的C或C++ API
24.4 案例:用SQLite嵌入式資料庫實現MyNotes數據持久層
24.4.1 Note實體類代碼
24.4.2 創建表
24.4.3 插入數據
24.4.4 查詢數據
24.4.5 套用沙箱
24.4.6 表示層開發
24.5 本章小結
第 25章 SPRITEKIT遊戲引擎
25.1 移動平台遊戲引擎介紹
25.2 第 一個SpriteKit遊戲
25.2.1 創建工程
25.2.2 工程剖析
25.3 一切都是節點
25.3.1 節點“家族”
25.3.2 節點樹
25.3.3 節點中重要的方法
25.3.4 節點中重要的屬性
25.4 精靈
25.4.1 精靈類SKSpriteNode
25.4.2 案例:沙漠英雄場景
25.4.3 使用紋理圖集性能最佳化
25.5 場景切換
25.5.1 場景切換方法
25.5.2 場景過渡動畫
25.5.3 案例:沙漠英雄場景切換
25.6 動作
25.6.1 常用動作
25.6.2 組合動作
25.6.3 案例:幀動畫實現
25.7 粒子系統
25.7.1 粒子系統屬性
25.7.2 內置粒子系統模板
25.8 遊戲音樂與音效
25.8.1 音頻檔案介紹
25.8.2 macOS和iOS平台音頻最佳化
25.8.3 背景音樂
25.8.4 3D音效
25.9 物理引擎
25.9.1 物理引擎核心概念
25.9.2 物理引擎中的物體
25.9.3 接觸與碰撞
25.9.4 案例:食品的接觸與碰撞
25.10 本章小結
第 26章 遊戲APP實戰——迷失航線
26.1 《迷失航線》遊戲分析與設計
26.1.1 《迷失航線》故事背景
26.1.2 需求分析
26.1.3 原型設計
26.1.4 遊戲腳本
26.2 任務1:遊戲工程的創建與初始化
26.2.1 疊代1.1:創建工程
26.2.2 疊代1.2:自定義類型維護
26.2.3 疊代1.3:添加資源檔案
26.2.4 疊代1.4:添加粒子系統
26.3 任務2:創建Loading場景
26.3.1 疊代2.1:設計場景
26.3.2 疊代2.2:Loading動畫
26.3.3 疊代2.3:預處理載入紋理
26.4 任務3:創建Home場景
26.4.1 疊代3.1:設計場景
26.4.2 疊代3.2:實現代碼
26.5 任務4:創建設定場景
26.5.1 疊代4.1:設計場景
26.5.2 疊代4.2:實現代碼
26.6 任務5:創建幫助場景
26.6.1 疊代5.1:設計場景
26.6.2 疊代5.2:實現代碼
26.7 任務6:實現遊戲場景
26.7.1 疊代6.1:設計場景
26.7.2 疊代6.2:創建敵人精靈
26.7.3 疊代6.3:創建玩家飛機精靈
26.7.4 疊代6.4:創建子彈精靈
26.7.5 疊代6.5:初始化遊戲場景
26.7.6 疊代6.6:玩家移動飛機
26.7.7 疊代6.7:遊戲循環與任務調度
26.7.8 疊代6.8:遊戲場景選單實現
26.7.9 疊代6.9:玩家飛機發射子彈
26.7.10 疊代6.10:子彈與敵人的碰撞檢測
26.7.11 疊代6.11:玩家飛機與敵人的碰撞檢測
26.8 任務7:遊戲結束場景
26.8.1 疊代7.1:設計場景
26.8.2 疊代7.2:實現代碼
26.9 還有“最後一公里”
26.9.1 添加圖示
26.9.2 調整Identity和Deployment Info屬性
26.9.3 調整程式代碼
26.10 本章小結