內容簡介
《Swift 開發手冊:技巧與實戰》分為6 章,第1 章介紹了與iOS 開發環境搭建有關的知識點。第2 章是Swift 基礎語法,基於Swift 1.2 正式版本。第3 章是Swift 進階語法,除了有難度的語法點之外,還加入了Swift 2.0 正式版本的語法改動與新特性。第4 章是作者根據史丹福大學iOS 8 公開課的計算器項目進行改進的計算器項目,通過這個簡單的項目介紹了Xcode 的基本用法和在iOS 開發中的重要概念——MVC 模式。第5 章介紹了iOS 中的重要內容UIKit 框架,涵蓋了UIKit 中常用的控制項,並通過豐富的實例展示了每一個控制項的用法;第5章的最後幾節介紹了iOS 9 中的新成員,並詳細講解了何如使用AutoLayout 對頁面元素進行布局。第6章介紹了iOS 系統API 的用法,全部基於Xcode 7.0 正式版,使用Swift 2.0 語法。附錄A 是作者精心挑選的一些幫助貼士。
《Swift 開發手冊:技巧與實戰》知識點較為全面,版本也較為貼近目前日常開發所使用的版本,既可以作為初學者的入門教材,也可以作為經驗老手的一個備忘手冊。
目錄
第1 章 搭建Swift 開發環境 … 1
1.1 Swift 介紹 ... 1
1.1.1 Swift 的前世今生 ...... 1
1.1.2 Swift 與Objective - C … 2
1.2 Mac OS X 作業系統 ........ 3
1.3 Xcode 簡介和獲取方法 .. 4
1.3.1 Xcode 簡介 ........ 4
1.3.2 Playground 簡介 4
1.3.3 Xcode 的獲取方法 ..... 5
1.4 iPhone SDK 簡介.. … 6
第2 章 Swift 基礎語法 ........ 7
2.1 基礎知識.. … 7
2.1.1 命名規則… 7
2.1.2 常量與變數 ....... 8
2.1.3 類型推測 .. 9
2.1.4 注釋 . … 9
2.1.5 輸出常量和變數 ...... 10
2.2 基本數據類型 ..... 11
2.2.1 整數 ........ 11
2.2.2 浮點數 .... 11
2.2.3 布爾類型 11
2.2.4 元組類型 12
2.2.5 可選型 .... 13
2.3 基本運算符 15
2.3.2 數值運算 … 15
2.3.3 自增和自減運算 ...... 16
2.3.4 複合賦值 … 16
2.3.5 比較運算 … 16
2.3.8 範圍 ........ 17
2.3.9 括弧優先權 ..... 18
2.4 字元串與字元 ..... 18
2.5 集合類型... 22
2.5.1 數組 ........ 22
2.5.2 集合 ........ 25
2.5.3 字典 ........ 26
2.6 控制流 ...... 27
2.6.1 for 循環 .. … 27
2.6.2 while 循環 ....... 28
2.6.3 if 判斷語句 ...... 29
2.6.4 switch 開關語句 ....... 29
2.7 函式 . … 31
2.8 閉包 . … 34
2.9 Swift 三傑——類、結構體、枚舉 ....... 37
2.9.1 Swift 三傑簡介 ........ 37
2.9.2 值引用與類型引用 .. 38
2.9.3 類 .. 38
2.9.4 結構體 .... 39
2.9.5 枚舉 ........ 40
2.10 屬性 … 41
2.10.1 存儲屬性 ....... 41
2.10.2 計算屬性 ....... 42
2.10.3 屬性觀察器 ... 44
2.10.4 類型屬性 ....... 45
2.11 方法 . …46
2.12 下標 …. 49
2.13 繼承 . …51
2.14 構造與析構 …53
2.14.1 構造器 .. 54
2.14.2 析構器 .. 57
2.15 類型檢查與類型轉換 .. 58
2.15.1 類型檢查 ....... 59
2.15.2 類型轉換 ....... 60
2.16 類型嵌套... 61
2.17 擴展 . ..62
2.17.1 擴展計算屬性 ........ 62
2.17.2 擴展構造器 ... 63
2.17.3 擴展方法 ....... 63
2.17.4 擴展下標 ....... 64
2.18 協定 ........ 64
2.18.1 聲明協定 ....... 64
2.18.2 遵守協定 ....... 66
2.18.3 實現協定 ....... 66
2.19 泛型 … 66
2.20 斷言 . …67
第3 章 Swift 進階語法 .. 69
3.1 再談可選型 69
3.1.1 可選型 .... 69
3.1.2 為什麼要用可選型 .. 70
3.1.3 解包可選型 ..... 71
3.1.4 可選綁定 …72
3.1.5 可選鏈 .... 73
3.2 AnyObject . ….74
3.2.1 AnyObject 簡介 ........ 74
3.2.2 AnyObject 的使用 .... 74
3.3 幾個數組相關的實用方法 ... 76
3.3.1 filter 方法 ........ 76
3.3.2 map 方法 …..76
3.3.3 reduce 方法 ..... 78
3.3.4 sort 方法 . ….78
3.3.5 contains 方法 ... 78
3.3.6 find 方法 . …79
3.4 Objective - C 兼容性 ... 79
3.5 ARC 自動引用計數 .... 80
3.5.1 ARC 原理 ........ 80
3.5.2 循環強引用 ..... 82
3.5.3 弱引用與無主引用 …. 83
3.6 帶下標的遍歷 ..... 84
3.6.1 C 語言風格的for 循環 ..... 85
3.6.2 快速遍歷 …85
3.6.3 enumerateObjectsUsingBlock .... 85
3.6.4 enumerate ........ 85
3.7 方法參數的語法甜頭 .. 86
3.7.1 可變參數 ….86
3.7.2 柯里化 .... 86
3.8 閉包的“延遲調用”特性 ... 88
3.9 Swift 2.0 新特性詳解 .. 90
3.9.1 println 簡化為print .. 90
3.9.2 do-while 更名為repeat-while .... 91
3.9.3 where 關鍵字 .. 91
3.9.4 if-case 結構 ..... 92
3.9.5 guard 關鍵字 ... 92
3.9.6 錯誤處理 ….93
3.9.7 LLVM 與泛型特化 .. 96
3.9.8 Protocol Extensions .. 97
3.9.9 API 的可用性檢查 ... 98
3.9.10 String 與NSString 言歸於好 ... 99
3.9.11 總結 .... 100
第4 章 iOS 開發中的MVC 模式 ... 101
4.1 iOS 系統初探 ... 101
4.1.1 核心OS(Core OS)層 . …102
4.1.2 核心服務(Core Services)層 ….102
4.1.3 媒體(Media)層 .. 103
4.1.4 Cocoa Touch 層 ...... 103
4.2 MVC 模式 ........ 103
4.2.1 MVC 簡介 ..... 103
4.2.2 iOS 中的MVC ....... 103
4.3 新建一個Swift 工程 . 106
4.4 認識Interface Builder ........ 109
4.5 構建計算器界面 ........ 112
4.5.1 使用對象庫中的對象 ..... 113
4.5.2 使用檢查器設定對象 ..... 114
4.5.3 嘗試運行程式 ........ 115
4.5.4 添加約束 ....... 117
4.5.5 關聯代碼 ....... 120
4.5.6 完善按鍵 ....... 125
4.6 實現計算器邏輯 ........ 126
4.6.1 補全鍵盤 ....... 127
4.6.2 給鍵盤添加約束 .... 128
4.6.3 實現數字顯示功能 131
4.6.4 實現運算邏輯 . ….133
4.7 修改計算器為MVC 模式 .. 135
4.8 NSNotification .. ..137
4.8.1 NSNotification 簡介 ........ 137
4.8.2 addObserver 方法 ... 138
4.8.3 addObserverForName 方法 ...... 141
4.8.4 postNotification 方法 ...... 142
第5 章 掌控UIKit ....... 143
5.1 本地化 .... 143
5.2 視圖(View) ….. 145
5.3 生命周期. 149
5.3.1 APP 的生命周期 .... 149
5.3.2 控制器的生命周期 150
5.4 Button(按鈕) …..151
5.4.1 按鈕屬性檢查器 .... 152
5.4.2 按鈕的代碼實現 .... 153
5.4.3 為按鈕添加事件 .... 155
5.5 Label(標籤) . …..156
5.5.1 Label 的屬性檢查器 ....... 157
5.5.2 Label 的代碼實現 .. 158
5.6 TextField(文本框) ……159
5.6.1 Text Field 的屬性檢查器 ……160
5.6.2 Text Field 的代碼實現 .... 161
5.6.3 鍵盤 ...... 162
5.7 Switch(開關) ........ 163
5.8 Segmented Control(分段控制項) ........ 165
5.8.1 Segmented Control 的屬性檢查器 ... 166
5.8.2 Segmented Control 的代碼實現 ....... 166
5.8.3 “按鈕”還是“分段” . …..168
5.9 Slider(滑塊) …… 169
5.9.1 Slider 的屬性檢查器 ....... 169
5.9.2 Slider 的代碼實現 ….. 170
5.10 ProgressView&ActivityIndicatorView . 171
5.10.1 多執行緒入門 . 171
5.10.2 ProgressView(進度條) ...... 173
5.10.3 ActivityIndicatorView(環形進度條) .. 175
5.11 Stepper(步進器) ... 177
5.11.1 Stepper 的屬性檢查器 .. 178
5.11.2 Stepper 的代碼實現 ...... 178
5.12 ImageView(圖像控制項) .. 179
5.12.1 UIImageView&UIImage ........ 180
5.12.2 UIImageView 的屬性檢查器 …….182
5.12.3 UIImageView 的代碼實現 .... 182
5.13 PickerView&DatePicker ..... 186
5.13.1 PickerView(選擇器)簡介 …….. 186
5.13.2 使用delegate 和dataSource .. 187
5.13.3 PickerView 的代碼實現 ........ 189
5.13.4 DatePicker(日期選擇器)的屬性檢查器 ...... 192
5.13.5 DatePicker 的代碼實現 …….194
5.13.6 淺談“Delegate pattern”委託模式 ........ 194
5.14 AlertView&ActionSheet ..... 195
5.14.1 AlertView(提醒框) ……. 195
5.14.2 ActionSheet(操作表) ........ 198
5.14.3 更好的選擇:UIAlertController .... 200
5.15 多重MVC 及Segue(過渡) .... 204
5.15.1 多重MVC 與Segue 簡介 ..... 204
5.15.2 NavigationController(導航控制器) .... 207
5.15.3 Segue(過渡) .... 214
5.15.4 SplitViewController(分屏控制器) ...... 223
5.15.5 TabBarController(選項卡控制器) ...... 225
5.15.6 PageViewController(頁面控制器) ...... 232
5.16 Toolbar(工具列) ... 239
5.17 ScrollView(滾動視圖) .. …242
5.17.1 ScrollView 簡介 ... 242
5.17.2 CGFloat、CGPoint、CGSize ……242
5.17.3 視圖的坐標系統 .. 242
5.17.4 ScrollView 實戰 ... 243
5.18 TableViewController(表視圖控制器) ...... 246
5.18.1 UITableView 簡介 ........ 246
5.18.2 UITableViewCell 簡介 ….. 249
5.18.3 TabelView 與cell 的互動 ...... 250
5.19 SearchBar(搜尋框) ........ 255
5.19.1 SearchBar 的屬性檢查器 ....... 255
5.19.2 實時顯示搜尋結果的SearchBar .... 257
5.20 iOS 與Web ....... 260
5.20.1 UIWebView ……. 260
5.20.2 WKWebView ....... 263
5.20.3 SFSafariViewController ……264
5.21 AutoLayout&StackView ..... 266
5.21.1 AutoLayout(自動布局) ..... 266
5.21.2 UIStackView(堆疊視圖) ... 276
第6 章 iOS 開發揭秘 ……. 280
6.1 Gesture(手勢) ....... 280
6.2 KVC 與API 設計 ...... 285
6.3 訪問簡訊API 與電話API . …..289
6.3.1 使用URL 訪問簡訊API 與電話API ....... 289
6.3.2 MessageUI ..... 290
6.4 訪問相冊API 與相機API …… 292
6.5 快速分享API ... 295
6.6 地圖與定位API ........ 300
6.7 網路通信. ….310
6.7.1 網路通信初探 ........ 311
6.7.2 NSURLConnection 還是NSURLSession .. 312
6.8.1 Archiving(歸檔) 317
6.8.2 File System(檔案系統) ....... 317
6.8.3 SQLite&Core Data . 320
6.9 多執行緒 .... 325
6.9.1 GCD ...... 325
6.9.2 NSOperationQueue . 328
附錄A Swifter 幫助貼士 ...... 331