內容提要
Swift:面向協定編程》第1章簡要介紹了Swift 的發展歷史以及Swift 開發工具的獲取途徑。第2章介紹了Swift 的基礎語法,細緻講解了面向協定編程中至關重要的協定擴展用法與泛型最佳化。第3章講解了Swift 的進階語法,從語言層面深入到記憶體層面,對Swift 的特性進行了剖析,幫助讀者寫出更加Swift 化的代碼。第4章通過一個完整的計算器Demo 指導讀者快速完成一個iOS 套用的開發,熟悉Xcode 的使用,理解經典的MVC 編程模式。第5章通過一個備忘錄Demo,將傳統的MVC、MVVM 思想構建的程式與基於協定構建的程式進行了多個維度的對比,揭開了面向協定編程思想的神秘面紗,教會讀者如何在實際工作中套用面向協定編程思想。
目錄
第1章 搭建Swift開發環境
1.1 Swift介紹
1.1.1 Swift的前世今生
1.1.2 Swift與Objective-C
1.2 Mac OS X作業系統
1.3 Xcode簡介和獲取方法
1.3.1 Xcode簡介
1.3.2 playground簡介
1.3.3 Xcode的獲取方法
1.4 iPhone SDK簡介
第2章 Swift基礎語法
2.1 基礎知識
2.1.1 命名規則
2.1.2 常量與變數
2.1.3 類型推測
2.1.4 注釋
2.1.5 輸出常量和變數
2.2 基本數據類型
2.2.1 整數
2.2.2 浮點數
2.2.3 布爾類型
2.2.4 元組類型
2.2.5 可選型
2.3 基本運算符
2.3.1 賦值運算符
2.3.2 數值運算
2.3.3 自增和自減運算
2.3.4 複合賦值
2.3.5 比較運算
2.3.6 三元運算符
2.3.7 邏輯運算符
2.3.8 範圍
2.3.9 括弧優先權
2.4 字元串與字元
2.5 集合類型
2.5.1 數組
2.5.2 集合
2.5.3 字典
2.6 控制流
2.6.1 for循環
2.6.2 while循環
2.6.3 if判斷語句
2.6.4 guard判斷語句
2.6.5 switch開關語句
2.7 函式
2.8 閉包
2.9 Swift三傑——類、結構體、枚舉
2.9.1 Swift三傑簡介
2.9.2 值引用與類型引用
2.9.3 類
2.9.4 結構體
2.9.5 枚舉
2.10 屬性
2.10.1 存儲屬性
2.10.2 計算屬性
2.10.3 屬性觀察器
2.10.4 類型屬性
2.11 方法
2.12 下標
2.13 繼承
2.14 構造與析構
2.14.1 構造器
2.14.2 析構器
2.15 類型檢查與類型轉換
2.15.1 類型檢查
2.15.2 類型轉換
2.16 類型嵌套
2.17 擴展
2.17.1 擴展計算屬性
2.17.2 擴展構造器
2.17.3 擴展方法
2.17.4 擴展下標
2.18 協定
2.18.1 聲明協定
2.18.2 遵守協定
2.18.3 實現協定
2.18.4 實現擴展
2.18.5 協定擴展補充
2.18.6 協定的繼承
2.19 泛型
2.19.1 節點泛型
2.19.2 泛型協定
2.19.3 泛型對象
2.19.4 泛型方法
2.19.5 協定中的where關鍵字
2.19.6 泛型特化
2.20 Swift語法補充
2.20.1 斷言
2.20.2 precondition
第3章 Swift進階語法
3.1 再談可選型
3.1.1 可選型
3.1.2 為什麼要用可選型
3.1.3 解包可選型
3.1.4 可選綁定
3.1.5 可選鏈
3.1.6 可選型中的map和flatMap
3.1.7 Swift中的錯誤處理
3.1.8 隱式解包
3.1.9 關於可選型的思考
3.2 同構與異構
3.2.1 數據源中的同構與異構
3.2.2 AnyObject/Any簡介
3.2.3 AnyObject的使用
3.2.4 AnyObject與id的對比
3.3 數組方法的探究
3.3.1 filter方法
3.3.2 map和flatMap方法
3.3.3 reduce方法
3.3.4 sort(sorted)方法
3.3.5 Side-Effect與forEach方法
3.3.6 contains方法
3.3.7 indexOf(index(of:))方法
3.3.8 prefix、suffix系方法
3.3.9 dropFirst、dropLast方法
3.3.10 Slice
3.3.11 RangeReplaceableCollectionType
3.3.12 數組的底層協定
3.3.13 帶下標的數組遍歷
3.3.14 Demo演示
3.4 Objective-C兼容性
3.4.1 類型橋接
3.4.2 OC和Swift的設計區別
3.5 Swift記憶體管理
3.5.1 棧和堆
3.5.2 值類型和引用類型
3.5.3 Copy-on-Write
3.5.4 利用引用類型的“共享”
3.5.5 ARC(自動引用計數)
3.5.6 循環引用
3.5.7 弱引用與無主引用
3.5.8 柯里化與方法參數中的閉包
3.5.9 @noescape與@autoclosure
3.5.10 靜態派發和動態派發
3.5.11 協定類型的存儲屬性
3.5.12 靜態多態與動態多態
3.5.13 泛型特化
3.5.14 小結
3.6 模式匹配
3.6.1 模式匹配簡介
3.6.2 枚舉的模式匹配
3.6.3 元組的模式匹配
3.6.4 if和guard中的模式匹配
3.6.5 for中的模式匹配
3.6.6 模式匹配中的where關鍵字
第4章 iOS開發入門
4.1 iOS系統初探
4.1.1 核心OS(Core OS)層
4.1.2 核心服務(Core Services)層
4.1.3 媒體(Media)層
4.1.4 Cocoa Touch層
4.2 MVC模式
4.2.1 MVC簡介
4.2.2 iOS中的MVC
4.3 新建一個Swift工程
4.4 認識Interface Builder
4.5 構建計算器界面
4.5.1 使用對象庫中的對象
4.5.2 使用檢查器設定對象
4.5.3 嘗試運行程式
4.5.4 添加約束
4.5.5 關聯代碼
4.5.6 完善按鍵
4.6 實現計算器邏輯
4.6.1 補全鍵盤
4.6.2 給鍵盤添加約束
4.6.3 實現數字顯示功能
4.6.4 實現運算邏輯
4.7 修改計算器為MVC模式
4.8 NSNotification
4.8.1 NSNotification簡介
4.8.2 addObserver方法
4.8.3 addObserverForName方法
4.8.4 postNotification方法
4.8.5 Swift 3.0中的Notification
4.9 AutoLayout快速入門
4.9.1 邊距與距離
4.9.2 中心與對齊
4.9.3 尺寸與比例
4.9.4 絕對位置與擠壓
第5章 面向協定編程
5.1 繼承與組合
5.2 搭建頁面
5.3 創建storyboard對應的子類
5.4 創建模型
5.5 串聯MVC
5.6 MVVM
5.7 圖解MVC與MVVM
5.8 MVC面向協定化
5.9 MVC多態最佳化
5.10 快速開發
5.11 組合
5.12 互動
5.13 搜尋