內容簡介
本書由
iOS開發工程師精心編撰,兼備核心語法、編程技巧、套用實踐3部分。第1部分從Xcode開發工具及Swift學習環境的搭建開始,重點介紹Swift的語言特性和套用場景、Swift 4的新增特性,並提供大量編程練習,幫助讀者儘快掌握Swift語言的精髓。第2部分介紹Swift開發iOS套用的基本技能,包括獨立UI控制項的套用、視圖界面邏輯的開發、動畫與布局技術、網路與數據處理技術等,旨在帶領讀者掌握獨立開發一款iOS 應用程式的能力。第3部分為套用部分,這部分安排3個實戰項目(簡易計算器、生活記事本、中國象棋遊戲),旨在全面鍛鍊讀者的實際開發能力,使用Swift進行開發實踐。本書各章還安排了練習題與模擬面試題,以幫助讀者鞏固知識應對職場面試。
目錄
第1部分 Swift語言基礎語法
第1章 學習環境的搭建 3
1.1 申請個人AppleID賬號 3
1.2 下載與安裝Xcode開發工具 4
1.3 Xcode開發工具簡介 5
1.4 使用Playground進行Swift代碼演練 9
第2章 量值與基本數據類型 10
2.1 變數與常量 11
2.1.1 變數與常量的定義和使用 11
2.1.2 變數和常量的命名規範 12
2.2 關於注釋 13
2.3 初識基本數據類型 14
2.3.1 數學進制與計算機存儲原理 14
2.3.2 整型數據 15
2.3.4 布爾型數據 16
2.4 兩種特殊的基本數據類型 16
2.4.1 元組 17
2.4.2 可選值類型 18
2.5 為類型取別名 20
2.6 練習及解析 20
2.7 模擬面試 21
第3章 字元、字元串與集合類型 23
3.1 字元串類型 24
3.1.1 進行字元串的構造 24
3.1.2 字元串的組合 25
3.2 字元類型 25
3.2.1 字元類型簡介 25
3.2.2 轉義字元 26
3.3 字元串類型中的常用方法 27
3.4 集合類型 29
3.4.1 Array數組類型 30
3.4.2 Set集合類型 33
3.4.3 Dictionary字典類型 35
3.5 練習及解析 37
3.6 模擬面試 40
第4章 基本運算符與程式流程控制 42
4.1初識運算符 43
4.2Swift語言中兩種特殊的運算符 46
4.2.1空合併運算符 46
4.2.2區間運算符 47
4.3循環結構 48
4.3.1for-in循環結構 48
4.3.2while與repeat-while條件循環結構 49
4.4條件選擇與多分支選擇結構 50
4.4.1if與if-else條件選擇結構 50
4.4.2switch-case多分支選擇結構 51
4.5Swift語言中的流程跳轉語句 54
4.6練習及解析 57
4.7模擬面試 60
第5章函式與閉包技術 62
5.1函式的基本套用 63
5.1.1函式的創建與調用 63
5.1.2關於函式的參數名 64
5.1.3函式中參數的默認值、不定數量參數與inout類型參數 66
5.2函式的類型與函式嵌套 67
5.3理解閉包結構 69
5.3.1閉包的語法結構 69
5.3.2通過實現一個排序函式來深入理解閉包 70
5.4將閉包作為參數傳遞時的寫法最佳化 72
5.5後置閉包、逃逸閉包與自動閉包 73
5.6練習及解析 74
5.7模擬面試 78
第6章高級運算符與枚舉 79
6.1位運算符與溢出運算符 80
6.1.1位運算符的套用 80
6.1.2溢出運算符 81
6.2運算符的重載與自定義 82
6.2.1重載運算符 82
6.2.2自定義運算符 84
6.3運算符的優先權與結合性 85
6.4枚舉類型的創建與套用 87
6.5枚舉的原始值與相關值 88
6.5.1枚舉的原始值 88
6.5.2枚舉的相關值 89
6.5.3遞歸枚舉 91
6.6練習及解析 93
6.7模擬面試 95
第7章類與結構體 96
7.1類與結構體的定義 96
7.1.1結構體 97
7.1.2類 98
7.2設計一個交通工具類 100
7.3開發中類與結構體的套用場景 102
7.4練習及解析 103
7.5模擬面試 105
第8章屬性與方法 107
8.1存儲屬性與計算屬性 108
8.1.1存儲屬性的意義及套用 108
8.1.2計算屬性的意義及套用 110
8.2屬性監聽器 112
8.3實例屬性與類屬性 113
8.4實例方法與類方法 114
8.4.1實例方法的意義與套用 114
8.4.2類方法 116
8.5下標方法 117
8.6練習及解析 118
8.7模擬面試 119
第9章構造方法與析構方法 121
9.1構造方法的設計與使用 121
9.2指定構造方法與便利構造方法 124
9.3構造方法的繼承關係 126
9.4構造方法的安全性檢查 128
9.5可失敗構造方法與必要構造方法 129
9.6析構方法 130
9.7練習與解析 130
9.8模擬面試 132
第10章記憶體管理與異常處理 133
10.1自動引用計數 134
10.2循環引用及其解決方法 136
10.3閉包中的循環引用 141
10.4異常的拋出與傳遞 142
10.5異常的捕獲與處理 143
10.6延時執行結構 144
10.7練習與解析 145
10.8模擬面試 146
第11章類型轉換、泛型、擴展與協定 147
11.1類型檢查與轉換 148
11.1.1Swift語言中的類型檢查 148
11.1.2Swift語言中的類型轉換 149
11.2Any與AnyObject類型 150
11.3泛型 151
11.3.1初識泛型 151
11.3.2對泛型進行約束 153
11.4擴展與協定 155
11.4.1使用擴展對已經存在的數據類型進行補充 155
11.4.2協定的特點與套用 157
11.4.3協定與擴展的結合 160
11.5模擬面試 160
第12章Swift4特性指南 162
12.1記憶體安全檢查(獨占訪問許可權) 162
12.2關聯類型可以添加where約束子句 165
12.3增強字元串和區間運算符的功能 165
12.4泛型與協定功能的增強 166
12.5模擬面試 168
第2部分iOS開發基礎
第13章UI控制項與邏輯互動(1) 171
13.1iOS項目工程簡介 172
13.1.1創建iOS項目工程 172
13.1.2運行第一個iOS程式 173
13.2標籤控制項——UILabel 175
13.2.1使用代碼創建一個UILabel控制項 175
13.2.2自定義UILable控制項的展示效果 176
13.2.3定義更加豐富多彩的UILabel控制項 178
13.3按鈕控制項——UIButton 179
13.3.1創建UIButton按鈕控制項 179
13.3.2為按鈕添加觸發事件 181
13.3.3為UIButton添加自定義圖片 182
13.4圖片顯示控制項——UIImageView 184
13.4.1圖片類UIImage 184
13.4.2使用UIImageView進行圖片的展示 184
13.4.3使用UIImageView播放動畫 185
13.5文本輸入框控制項——UITextField 186
13.5.1創建文本輸入框控制項 187
13.5.2為UITextField設定左右視圖 188
13.5.3UITextField控制項的代理方法 189
13.6開關控制項UISwitch 192
13.7分頁控制器——UIPageControl 193
13.8分部控制器——UISegmentedControl 194
13.8.1創建分布控制器控制項 194
13.8.2UISegmentedControl控制項中按鈕的增刪改操作 195
13.8.3關於UISegmentedControl控制項中按鈕的尺寸問題 196
13.9模擬面試 197
第14章UI控制項與邏輯互動(2) 198
14.1滑塊控制項UISlider 199
14.1.1UISlider控制項的創建與設定 199
14.1.2UISlider控制項的外觀自定義與用戶互動 200
14.2活動指示器UIActivityIndicatorView 201
14.3進度條控制項UIProgressView 202
14.4步進器UIStepper 204
14.5選擇器控制項UIPickerView 205
14.6時間選擇器UIDataPicker 209
14.7搜尋欄控制項UISearchBar 211
14.7.1創建UISearchBar控制項 211
14.7.2UISearchBar控制項的更多功能按鈕 214
14.7.3UISearchBar控制項的附屬檔案視圖 215
14.7.4UISearchBarDelegate協定詳解 216
14.8模擬面試 217
第15章視圖控制器與高級UI視圖控制項 219
15.1應用程式的界面管理器UIViewController 220
15.1.2UIViewController的生命周期 221
15.1.3UIViewController之間的切換與傳值 222
15.2導航視圖控制器UINavigationController 227
15.2.1理解導航結構 228
15.2.2搭建使用導航結構的項目 228
15.2.3對導航欄進行自定義設定 230
15.2.4使用導航進行視圖控制器的切換管理 232
15.3標籤欄控制器UITabBarController 233
15.3.1創建以UITabBarController為項目結構工程 234
15.3.2對UITabBarController中的標籤進行自定義配置 237
15.3.3標籤欄上標籤的溢出與排序功能 239
15.4警告視圖控制器的套用 241
15.4.1認識UIAlertAction類 241
15.4.2使用UIAlertController創建警告框彈窗 242
15.4.3使用UIAlertController創建抽屜彈窗 244
15.5網頁視圖的套用 245
15.5.1網頁視圖UIWebView 245
15.5.2認識WebKit框架 248
15.5.3使用WKWebViewConfiguration對網頁視圖進行配置 249
15.5.4WKWebView中的重要屬性和方法解析 251
15.5.5關於WKUIDelegate協定 253
15.6滾動視圖UIScrollView的套用 253
15.6.1創建UIScrollView滾動視圖 254
15.6.2UIScrollViewDelegate協定介紹 255
15.6.3UIScrollView的縮放操作 256
15.7列表視圖UITableView的套用 257
15.7.1創建UITableView列表 258
15.7.2進行數據載體UITableViewCell的自定義 262
15.7.3UITableView的編輯模式 265
15.7.4為UITableView添加索引欄 268
15.8集合視圖UICollectionView的套用 269
15.8.1使用UICollectionView實現簡單的九宮格布局 269
15.8.2使用FlowLayout進行更加靈活的九宮格布局 271
15.8.3實現炫酷的瀑布流布局 273
15.9分頁控制器UIPageViewController的套用 276
15.9.1創建一個UIPageViewController工程 276
15.9.2關於UIPageViewControllerDelegate的更多套用 280
15.10模擬面試 283
第16章動畫與界面布局技術 285
16.1使用UIView層動畫實現屬性漸變效果 286
16.1.1UIView層的屬性過渡動畫 286
16.1.2UIView層的轉場動畫 289
16.2.1使用原生的UIImageView來播放GIF動態圖 291
16.2.2使用UIWebView來進行GIF動態圖的播放 293
16.3iOS開發中的CoreAnimation核心動畫技術 294
16.3.1初識CoreAnimation框架 294
16.3.2錨點對視圖幾何屬性的影響 294
16.3.3幾種常用的CALayer子類介紹 295
16.3.4CoreAnimation框架中的屬性動畫介紹 298
16.3.5CoreAnimation框架中的轉場動畫與組合動畫 300
16.4炫酷的粒子效果 301
16.4.1粒子發射引擎與粒子單元 302
16.4.2創建火焰粒子效果 304
16.5Autolayout自動布局技術 306
16.5.1使用storyboard或者xib檔案進行界面的自動布局 306
16.5.2進行視圖間的約束布局 309
16.5.3使用原生代碼進行Autolayout自動布局 310
16.5.4使用第三方框架SnapKit進行Autolayout自動布局 313
16.6使用Autolayout創建自適應高度的UITextView輸入框 314
16.7模擬面試 316
第17章網路與數據存儲技術 318
17.1獲取網際網路上公開API所提供的數據 319
17.1.1註冊天行API會員 319
17.1.2進行API接口測試 320
17.1.3關於JSON數據格式 321
17.2在iOS開發中進行網路數據請求 322
17.2.1關於HTTP網路請求協定 322
17.2.2使用URLSession進行網路請求 322
17.3使用UserDefaults進行簡單數據的持久化存儲 324
17.3.1使用UserDefaults與Plist檔案進行常見類型數據的存儲 325
17.3.2使用Plist檔案進行數據持久化處理 326
17.4iOS開發中的歸檔技術套用 328
17.4.1對簡單數據類型的歸檔操作 328
17.4.2對自定義數據類型進行歸檔操作 330
17.5資料庫在iOS開發中的套用 331
17.5.1運算元據庫常用語句 331
17.5.2可視化資料庫管理工具MesaSQLite的簡單套用 334
17.5.3libsqlite3庫簡介 336
17.5.4在iOS工程中調用libsqlite3庫運算元據庫 338
17.6使用CoreData框架進行數據管理 341
17.6.1使用CoreData框架進行數據模型設計 341
17.6.2使用CoreData進行數據的添加與查詢操作 343
17.7使用CoreData框架進行數據管理 345
第3部分項目實戰
第18章實戰一:簡易計算器 349
18.1計算器按鍵與操作面板的封裝 349
18.2計算器顯示板輸入顯示的邏輯開發 352
18.3計算器計算邏輯的設計 357
18.4為套用添加圖示與啟動頁 359
第19章實戰二:點滴生活記事本 361
19.1項目工程的搭建 361
19.2主頁記事分組視圖的開發 364
19.3添加分組功能的開發 367
19.4資料庫引入與記事分組信息的持久化 369
19.5記事列表界面的搭建 372
19.6新建記事功能的開發 376
19.7更新記事與刪除記事功能的開發 381
第20章實戰三:《中國象棋》遊戲 385
20.1項目工程的搭建與音頻模組的開發 385
20.2《中國象棋》棋子控制項的開發 389
20.3《中國象棋》棋盤控制項的開發 392
20.4“兵”與“卒”行棋邏輯的開發 396
20.5“將”與“士”相關棋子行棋邏輯的開發 403
20.6“象”與“馬”相關棋子行棋邏輯的開發 405
20.7“車”與“炮”棋子行棋邏輯的開發 410
20.8勝負判定邏輯開發與遊戲功能完善 414
20.9拆分冗長的checkCanMove( )方法 419
附錄ACocoaPods庫管理工具的套用 427
附錄B關鍵概念檢索表 430