內容簡介
Swift開發語言是蘋果公司於2014年最新發布的一種全新的開發語言,它完全兼容Objective-C,可以使用Cocoa Touch類庫和大量的第三方庫。本書深入淺出、系統全面地介紹了Swift開發技術。內容包括Swift語言基礎篇和SwiftUI設計篇,從Swift程式語言入門開始,逐漸深入講解Swift的面向對象技術,各種Swift語言的高級特性,如subscript、操作符重載、泛型,以及Objective-C相互調用等,最後介紹了如何進行Swift的iOS App開發。本書面向希望為iPhone/iPad以及OSX開發應用程式的開發人員,是一本從入門到精通的開發手冊。書中通過大量清晰、完善的實例,可以迅速引導讀者進行iOS開發。
作者簡介
歐陽堅
畢業於清華大學,資深軟體架構師,有超過10年軟體開發經驗,曾在多家頂級作業系統公司任職,長期從事作業系統、系統軟體、軟體架構、核心驅動最佳化等系統級軟體設計和開發工作。對C/C++、Java、Objective-C等語言有豐富的運用經驗,尤其對iOS/Android移動網際網路軟體開發有著濃厚的興趣。
專業推薦
全面:涵蓋Swift開發的基礎知識、常用技術模組及UI App開發
新穎:以Swift最新穩定的Xcode 6.x版本進行講解,兼顧iPhone最新前沿技術
詳細:結合圖示,從概念、語法、示例、技巧和套用等多角度分析每個知識點
深入:對Swift各種開發技術進行了原理分析,便於讀者更加深刻地理解
圖書目錄
上篇 Swift語言基礎篇
第1章 Swift語言介紹 2
1.1 Swift語言介紹 2
1.2 Swift和Objective-C語言對比 3
1.3 Swift優秀的特性 5
1.4 使用Xcode建立Swift項目 9
1.5 Swift使用Playground 13
第2章 基礎知識 16
2.1 常量與變數 16
2.1.1 常量和變數的聲明 16
2.1.2 常量或變數的類型 17
2.1.3 常量和變數的命名 17
2.1.4 常量和變數的輸出 18
2.1.5 字元串的連線輸出 19
2.1.6 注釋 19
2.1.7 分號 20
2.1.8 漢字命名方式 20
2.2 類型定義 20
2.2.1 整型 20
2.2.2 浮點型 21
2.2.3 自定義類型typealias 22
2.2.4 類型安全及類型推導 22
2.2.5 常數和數值進制的表示方法 22
2.2.6 類型轉換 23
2.2.7 類型別名 24
2.2.8 布爾類型 25
2.2.9 元組Tube 25
2.3 可選類型Optional 26
2.3.1 可選類型的聲明 27
2.3.2 可選類型的賦值 27
2.3.3 可選類型的使用 27
2.3.4 可選類型nil的使用 28
2.4 基本運算符 28
2.4.1 賦值運算符 28
2.4.2 算術運算符 28
2.4.3 複合運算符 31
2.4.4 比較運算符 31
2.4.5 三目運算符 32
2.4.6 區間運算符 32
2.4.7 邏輯運算符 33
2.4.8 斷言Assert操作 34
第3章 字元串、數組、字典 35
3.1 字元串 35
3.1.1 字元串字面量 35
3.1.2 字元串的連線 36
3.1.3 字元串與其他數據類型的拼接 36
3.1.4 字元串相關操作方法 37
3.1.5 與其他類型的轉換 38
3.2 數組 39
3.2.1 數組的聲明及初始化 39
3.2.2 數組元素的訪問與修改 41
3.2.3 數組的遍歷 42
3.2.4 數組元素的插入與刪除 42
3.3 字典 43
3.3.1 字典的聲明及初始化 44
3.3.2 字典元素的訪問與修改 44
3.3.3 字典的遍歷 45
第4章 控制語句和函式 47
4.1 分支結構 47
4.1.1 if條件語句 47
4.1.2 switch語句 48
4.2 語句的作用域 50
4.3 循 環 結 構 51
4.3.1 for循環 51
4.3.2 forin循環 51
4.3.3 while循環 52
4.3.4 do-while循環 52
4.4 跳轉語句及塊標籤 53
4.4.1 continue語句 53
4.4.2 break語句 53
4.4.3 fallthrough語句 54
4.5 函式 54
4.5.1 函式的定義及調用方法 55
4.5.2 函式的參數 55
4.5.3 函式的返回值 57
4.5.4 函式的變數參數 58
4.5.5 函式的類型 58
4.5.6 函式的嵌套 59
第5章 枚舉和結構體 60
5.1 枚舉 60
5.1.1 枚舉的聲明 60
5.1.2 枚舉的值 60
5.1.3 枚舉的使用方法 62
5.2 結構體 63
5.2.1 結構體的聲明和定義 63
5.2.2 結構體的構造方法 63
5.2.3 結構體的賦值和取值 64
5.2.4 結構體的嵌套 64
5.2.5 結構體是值拷貝類型 65
第6章 類 66
6.1 類的聲明與定義 66
6.1.1 類對象的創建 66
6.1.2 類的屬性的訪問 67
6.1.3 類的相互引用 67
6.1.4 類的嵌套 67
6.1.5 類是引用類型 68
6.1.6 恆等操作符(===/!===) 68
6.1.7 類的哈希 69
6.1.8 集合類型對象之間的賦值和拷貝 69
6.2 屬性 71
6.2.1 對象屬性 71
6.2.2 運算屬性 76
6.2.3 類屬性 77
6.3 方法 77
6.3.1 對象方法 77
6.3.2 類方法 80
6.4 subscript下標 81
6.4.1 subscript的作用 81
6.4.2 subscript的聲明 82
6.4.3 subscript的使用方法 82
6.4.4 subscript使用方法的例子 82
第7章 繼承 85
7.1 繼承實例分析 85
7.2 重寫 88
7.2.1 重寫方法 89
7.2.2 重寫屬性 89
7.2.3 重寫屬性觀察器 91
7.2.4 super關鍵字 93
7.2.5 final關鍵字 95
7.3 構造方法 97
7.3.1 構造方法的基本語法 97
7.3.2 構造方法的參數名稱 98
7.3.3 屬性的預設值 99
7.3.4 結構體的構造方法 100
7.3.5 枚舉類型的構造方法 101
7.3.6 值類型的構造方法代理 102
7.3.7 可選類型屬性與構造方法 103
7.3.8 常量屬性與構造方法 104
7.3.9 通過閉包或者函式設定屬性的預設值 105
7.3.10 派生類的構造方法 107
7.3.11 構造方法的重寫 113
7.3.12 構造方法的自動繼承 115
7.3.13 必須構造方法 118
7.4 析構方法 119
7.4.1 析構方法語法 119
7.4.2 析構方法的自動繼承 120
7.5 類擴展 121
7.5.1 類擴展的語法 121
7.5.2 擴展運算屬性 121
7.5.3 擴展構造方法 122
7.5.4 擴展普通方法 122
7.5.5 擴展下標 123
第8章 自動引用計數 125
8.1 自動引用計數的工作機制 125
8.2 自動引用計數實戰 126
8.3 對象之間的循環強引用 129
8.4 解決對象之間的循環強引用 131
8.4.1 弱引用weak 131
8.4.2 無主引用unowner 134
8.4.3 無主引用以及顯式展開的可選屬性 136
8.5 閉包引起的循環強引用 137
8.6 解決閉包引起的循環強引用 140
8.6.1 定義占有列表 140
8.6.2 弱引用和無主引用 141
第9章 可選鏈和類型轉換 143
9.1 可選鏈 143
9.1.1 可選鏈可替代強制解析 143
9.1.2 為可選鏈定義模型類 145
9.1.3 通過可選鏈調用屬性 146
9.1.4 通過可選鏈調用方法 147
9.1.5 使用可選鏈調用下標 147
9.1.6 可選鏈多層連結 148
9.1.7 連結自判斷返回值的方法 149
9.2 類型轉換 150
9.2.1 子類的對象賦值為基類 150
9.2.2 類型檢查 151
9.2.3 類型轉換 151
9.2.4 Any和AnyObject類型轉換 152
第10章 協定 155
10.1 協定的語法 155
10.1.1 屬性要求 155
10.1.2 方法要求 157
10.1.3 Mutating方法要求 157
10.1.4 使用協定規範構造函式 158
10.1.5 實現構造協定的類 158
10.1.6 協定類型 159
10.2 委託/代理設計模式 160
10.3 協定的各種使用 163
10.3.1 在擴展中添加協定成員 163
10.3.2 通過擴展補充協定聲明 164
10.3.3 集合中的協定類型 164
10.3.4 僅在類中使用協定 165
10.4 協定的繼承 165
10.4.1 協定合成 166
10.4.2 檢驗協定的一致性 167
10.4.3 可選協定要求 168
第11章 閉包和操作符重載 171
11.1 閉包表達式 171
11.1.1 sorted函式 171
11.1.2 閉包表達式語法 172
11.1.3 根據上下文推斷參數類型 173
11.1.4 單表達式閉包隱式返回 173
11.1.5 參數名稱縮寫 173
11.1.6 運算符函式 174
11.2 尾部閉包 174
11.2.1 訪問上下文值 176
11.2.2 閉包是引用類型 177
11.3 運算符重載 178
11.3.1 中置運算符函式 178
11.3.2 前置和後置運算符 179
11.3.3 組合賦值運算符 179
11.3.4 比較運算符 180
11.3.5 自定義運算符 180
11.3.6 自定義中置運算符的優先權和結合性 181
11.4 泛型 182
11.4.1 泛型解決的問題 182
11.4.2 泛型類型 184
11.4.3 關聯類型 190
11.5 Swift和Objective-C互動 194
11.5.1 Swift調用Objective-C函式 194
11.5.2 Objective-C 調用Swift程式 197
下篇 Swift UI設計篇
第12章 第一個UI項目 202
12.1 創建工程 202
12.2 Xcode工程界面 204
12.3 代碼及運行 205
12.4 運行 207
第13章 UIView視圖 208
13.1 UIView的創建 208
13.2 CGRect詳解 209
13.3 UIColor的使用 211
13.4 UIView的顯示 214
13.5 父視圖與子視圖 214
13.5.1 概念 214
13.5.2 多視圖 215
13.5.3 UIView的透明度屬性 216
13.6 UIView其他操作 216
13.6.1 子視圖數組 216
13.6.2 添加子視圖的其他方法 217
13.6.3 子視圖的層次的改變方法 219
13.6.4 UIView的簡單動畫 220
13.7 UIView的tag屬性 223
13.8 UIView的移除 224
第14章 iOS中的各種控制項 226
14.1 UILabel標籤 226
14.1.1 UILabel的創建 226
14.1.2 UILabel的背景顏色和文字顏色 226
14.1.3 設定文本對齊方式 227
14.1.4 文字大小與標籤寬度的自適應 228
14.1.5 行數與換行設定 230
14.1.6 UIFont字型的使用 232
14.1.7 文字陰影的設定 237
14.2 UIButton按鈕控制項 237
14.2.1 按鈕的創建 237
14.2.2 UIButton的文字及顏色設定 238
14.2.3 State按鈕的狀態 240
14.2.4 Type按鈕的類型 242
14.2.5 UIImage類的使用及給按鈕添加圖片 243
14.2.6 給按鈕添加事件回響 252
14.3 UIImageView圖片視圖 258
14.3.1 UIImageView的創建並顯示圖片 258
14.3.2 UIImageView顯示圖片的拉伸設定 261
14.3.3 使用UIImageView實現動畫 262
14.3.4 UIImageView的用戶回響 265
14.4 UITextField單行文本框 267
14.4.1 UITextField創建 267
14.4.2 UITextField屬性設定 268
14.4.3 鍵盤 275
14.4.4 UITextField回響用戶事件 278
14.4.5 UITextField監控輸入內容 280
第15章 UIViewControler視圖控制器 285
15.1 創建視圖控制器 285
15.2 視圖控制器的產生過程 288
15.3 視圖控制器的切換 290
15.3.1 彈出界面 290
15.3.2 回收界面 292
15.4 視圖控制器的生命周期 293
15.5 視圖控制器的切換動畫 294
第16章 UINavigationController導航欄控制器 297
16.1 導航欄控制器概述 297
16.2 導航欄控制器的創建 298
16.3 導航欄 299
16.3.1 導航欄的標題 299
16.3.2 導航欄的背景顏色 30
16.3.3 導航欄的背景圖片 300
16.3.4 導航欄的透明 302
16.3.5 導航欄的隱藏 303
16.4 視圖控制器之間的切換 304
16.4.1 push 304
16.4.2 pop 306
16.5 navigationItem屬性詳解 312
16.5.1 提示區域 312
16.5.2 標題區域 312
16.5.3 設定右側按鈕 315
16.5.4 設定左側按鈕 319
16.5.5 設定一組按鈕 321
16.5.6 設定返回按鈕 322
16.6 UIToolBar的使用詳解 325
16.6.1 系統自帶的工具列 325
16.6.2 使用工具列 326
16.6.3 自定義工具列 328
第17章 界面之間的傳值 330
17.1 正向傳值 330
17.2 反向傳值 331
17.2.1 協定代理 332
17.2.2 閉包 334
第18章 UITabBarController標籤欄控制器 337
18.1 標籤欄控制器概述 337
18.2 標籤欄控制器的創建 337
18.3 標籤的創建 340
18.3.1 通過tabBarItem屬性設定 340
18.3.2 自定義UITabBarItem 342
18.4 當創建的標籤超過5個時的狀態 344
18.5 標籤欄控制器代理 346
18.5.1 捕捉編輯完成狀態 346
18.5.2 捕捉標籤選擇的動作 348
18.6 標籤欄控制器的其他屬性設定 349
18.6.1 標籤的徽標 349
18.6.2 手動選擇標籤 349
18.7 NSUserDefault本地化存儲 350
第19章 UIScrollView滾動視圖 352
19.1 UIScrollView的創建 352
19.2 滾動條的設定 353
19.2.1 滾動條的樣式 354
19.2.2 滾動條的隱藏 354
19.3 滾動邊界反彈效果 355
19.4 偏移量 356
19.5 滾動視圖的代理方法 356
19.5.1 縮放 357
19.5.2 監控滾動視圖的滾動 358
19.6 分屏滾動 359
19.7 引導頁的實現 360
19.8 UIPageControl控制項 363
19.8.1 創建方式 363
19.8.2 隨著滾動視圖的滾動改變當前頁 363
19.8.3 設定顯示效果 364
第20章 UITableView表視圖 367
20.1 UITableView概述 367
20.1.1 UITableView的創建及顯示 367
20.1.2 UITableView的頭視圖 368
20.1.3 UITableView的腳視圖 369
20.1.4 UITableView的數據源 370
20.1.5 UITableView的分隔線 371
20.1.6 UITableViewCell單元格 373
20.1.7 UITableView的代理 377
20.1.8 UITableView的復用機制 379
20.2 NSIndexPath 380
20.3 多分區tableView 380
20.3.1 多分區tableView的創建 380
20.3.2 分區頭標題 382
20.3.3 分區腳標題 383
20.3.4 分區頭視圖及頭視圖的高度 384
20.3.5 分區腳視圖及腳視圖的高度 385
20.4 UITableView行編輯 386
20.4.1 設定cell為編輯狀態 386
20.4.2 修改cell的編輯狀態 388
20.4.3 cell的回響編輯及左滑編輯功能 389
20.4.4 cell的刪除 391
20.4.5 cell的增加 391
20.5 UITableView索引 392
20.6 UITableView搜尋 395
20.6.1 搜尋框 395
20.6.2 搜尋顯示控制器 395
20.7 UITableViewCell的定製 402
20.7.1 純代碼實現 404
20.7.2 xib實現定製 407