發表於2024-12-18
麵嚮協議編程包含瞭Swift標準庫的核心思想,為代碼的健壯性和靈活性提供瞭良好的支持。
本書由淺入深,詳細闡述瞭如何麵嚮協議編程,實例豐富,值得一讀。
《Swift:麵嚮協議編程》第1章簡要介紹瞭Swift 的發展曆史以及Swift 開發工具的獲取途徑。第2章介紹瞭Swift 的基礎語法,細緻講解瞭麵嚮協議編程中至關重要的協議擴展用法與泛型優化。第3章講解瞭Swift 的進階語法,從語言層麵深入到內存層麵,對Swift 的特性進行瞭剖析,幫助讀者寫齣更加Swift 化的代碼。第4章通過一個完整的計算器Demo 指導讀者快速完成一個iOS 應用的開發,熟悉Xcode 的使用,理解經典的MVC 編程模式。第5章通過一個備忘錄Demo,將傳統的MVC、MVVM 思想構建的程序與基於協議構建的程序進行瞭多個維度的對比,揭開瞭麵嚮協議編程思想的神秘麵紗,教會讀者如何在實際工作中應用麵嚮協議編程思想。
陳剛(微博@Cwift),《Swift開發手冊:技巧與實戰》作者,SwiftGG翻譯組成員,CSDN 博客專傢。曾擔任 GMTC 2016 Workshop專場講師,一個生活上充滿活力,技術上嚴肅認真的Swifter,正在努力挖掘Swift的強大潛力。
麵嚮協議編程包含瞭Swift標準庫的核心思想,也為新時代的開發者提供瞭穩定且靈活的編程範式。本書從基礎入手,結閤實踐,全方位闡釋瞭麵嚮協議的開發方式,是一本值得Swift開發者研讀的優秀書籍。
LINE iOS開發工程師,ObjC中國組織者 王巍(onevcat)
Swift必將取代Objective-C成為蘋果開發的主流,而且這個時間不會太久。我很高興看到這樣一本Swift書籍麵世,為在國內推廣Swift貢獻一份力量。本書由淺入深,探索Swift語言之美,挖掘語法特性、編程範式背後的設計思想,實例豐富,是一本優秀的Swift語言學習書籍。
——InfoQ移動主編 徐川
Swift支持多種編程方式,特彆是麵嚮協議編程為代碼的健壯性和靈活性提供瞭良好的支持。這是一門現代的語言,探索這門語言的更加“腦洞”的實踐性是件很有趣的事情。本書從基礎到實踐,為開發者闡述瞭如何麵嚮協議編程,值得入手。
——
第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 搜索
推薦序
很高興因為認識陳剛這位優秀的朋友,有幸讓自己的文字能夠呈現在讀者麵前,每一個字都顯得很珍貴。
這是一本介紹 Swift 語言的書。說起編程語言,這些年也廣泛地涉獵過諸多語言。從初中時開始接觸 VB,寫一些小程序,然後發送給朋友們。那時的 VB 看起來就像數學公式一樣。現在迴頭一看,可視化的界麵編輯也正像 Xcode 的 Interface Builder 一樣。到後來接觸瞭算法競賽,開始寫一些Pascal,告彆瞭圖形化界麵,在 Turbo Pascal 的藍屏背景下寫一些begin、end、readln、writeln。後來去外麵參加競賽,考捲有三種語言選擇:Pascal、C、C++。當大部分人用 Pascal 的時候,有少數幾個人用 C、C++考試,而監考老師發捲到他們那裏的時候也會說好厲害。於是潛意識中,覺得 C、C++ 是比 Pascal 更加厲害的語言。於是學瞭一年Pascal 的我再度歸零,拿起瞭譚浩強老師編寫的《C 程序設計》。C 語言讓我感覺很簡潔,同時接觸瞭指針、內存管理、字符串庫。比起 Pascal,C 代碼讓我覺得是那樣簡潔、優雅。每一個字符都有它的力量,無法去掉、無法再簡潔瞭。用它來寫深度搜索、圖論、二叉樹算法,然後去在綫評測係統提交代碼,再優化優化,接著代碼效率能上排名榜的第一頁,是一個15 歲少年所能期待的最美好的事情。
接著讀起瞭劉汝佳前輩的《算法競賽入門經典》一書,感慨語言之上,還能實現那麼多算法,解決一個又一個的問題。就像這本書一樣,前麵的語言章節僅是鋪墊,後麵的 iOS 開發章節纔是高潮。精通一門語言,然後用它去開發各種燦爛的iOS 應用,纔是高潮。
算法陪我度過瞭高中。高考之後,我讀瞭《黑客與畫傢》一書,對 Lisp 語言崇拜不已,於是就學瞭 Lisp。在2013 年到 2015 年,又陸續學瞭 Java、Clojure、JavaScript、Objective-C 和Swift。
後來創業做 Reviewcode.cn,又學瞭PHP、 CSS 和 HTML。開始更多地知道後端係統裏,語言起著怎樣的作用。後來到瞭新公司,擔任 Go 後端工程師。又在一個星期內學瞭 Go,並用它做瞭搶/發紅包、充值的 API 接口,協調移動端同時上綫瞭。
當用過很多語言後,你會發現很容易上手一門新語言,並快速用來乾活。最近我也重新起航創業瞭,創立瞭趣直播——一個知識直播平颱,孫源Sunny、iOS 程序猿都來直播過,可到我們的公眾號“平方根平颱”來看看,也可加我的微信“lzwjava”來交流産品或技術。
初識Swift 的原因是公司準備把 Objective-C 示例應用用Swift 重寫。重寫是件挺無聊的事情,於是隻重寫瞭覺得有趣的部分,其他代碼都用GitHub 上的Objective-C 轉 Swift 的程序先轉一遍,然後再去修復。將Objective-C 自動轉成Swift,在Swift 1.0 版本時還很好用,不用修復。可惜我當時用的時候,已經是Swift 1.2 版本瞭。算是給本書提供瞭一個 Swift 語法多變的真實例子吧。
後來用 Swift 做瞭微圖項目,旨在模仿國外的 imgur,展示互聯網上最熱門的圖,接觸到瞭extension、protocal、enum。再後來嘗試用 Swift 寫瞭一個 HTML Parser,比如從一大堆 HTML中解析 class="btn-blue" 的 div 齣來, 從而對 Swift 字符串處理、錯誤處理、AnyObject 有瞭更深入的瞭解。
Swift 中的 map、flatMap、filter,這些是 Lisp 係語言函數的基礎,通常用它們來構造更高階的函數。比如下麵的clojure 代碼片段,從 map 中獲取 values 對應的keys:
(let [m {:x 1 :y 2 :z 3}
vset #{2 3}]
(map first (filter (comp vset last) m)))
;;=> (:y :z)
很高興 Swift 有這麼多函數式的語法支持,函數式語言很擅長處理數據轉換,很優雅也很強大,想想上麵的幾行代碼用其他語言實現需要多寫多少代碼吧?
我是早前於 SwiftGG 的一次聚餐中認識作者陳剛兄的,後續時有交流。雖然不能經常見麵,但互相欣賞、惺惺相惜。希望未來有機會和陳剛兄一起共事。
本書通讀下來,不禁對陳剛兄做事的認真感到佩服。相信他能帶領大傢進入 Swift 的世界,掌控這門語言,寫齣各種燦爛的應用!
——趣直播創始人 李智維
眾所周知,在2015年的 WWDC 上,蘋果發布瞭 Swift 語言的 2.0 版本,並且正式宣布 Swift 成為一門麵嚮協議編程的語言。作為一個從 2014 年就開始接觸Swift 的程序員,我在當時已經具備瞭一定的 Swift 麵嚮對象編程經驗,這些經驗幫助我順利地完成瞭工程的更新;同樣,這些經驗也讓我變得遲鈍。在 2.0 版本發布之初,麵嚮協議編程這個名詞就好像一滴水滴入瞭大海中,從我的關注中溜走瞭。好在我是個對知識充滿敬意的人,此後的數月中,我都在重點研究 WWDC 2015 的視頻資料,此時我纔驚奇地發現,最初的那滴水變成瞭我心頭的驚濤駭浪,我開始不斷地思考與探索麵嚮協議編程的含義。
那麼麵嚮協議編程到底是什麼呢?一句話就能概括:用協議擴展的方式代替繼承,實現代碼復用。這個“代替”的影響是深遠的,協議擴展使得值類型在保持原有特性的同時,也能和引用類型一樣實現代碼的復用。定長的值類型保存在棧內存上,值類型沒有引用計數、不會被“共享”、隻需用常數時間就能完成一次“復製”,等等,這些特性使得值類型相比引用類型擁有更快的讀寫速度。同時,值類型的方法可以在編譯期進行“內聯”優化,更多的值類型意味著更大的優化空間。Swift 不但通過協議擴展的方式填補瞭傳統麵嚮對象編程語言中值類型代碼復用的鴻溝,同時應用 Copy-on-Write 技術還可免於陷入“絕對復製”帶來的性能問題。在 Swift 的代碼世界中,值類型得到瞭空前的解放。如果你正在使用 Swift 3.0 版本,那麼你應該已經發現瞭,那些摘掉瞭“NS”前綴的 Swift 原生對象,大部分都變成瞭值類型,毫無疑問,這種演變在後續的版本中還會繼續進行下去。所以從內存的角度來看,麵嚮協議編程正朝著麵嚮棧內存編程的方嚮前進。
這本書誕生於我在重新研究 WWDC 2015 視頻的階段,我所編著的《Swift開發手冊:技巧與實戰》首印即將售罄,該書的責編安娜(也是本書的責編)與我商討重印的細節。受寫作時Swift版本的影響,《Swift開發手冊:技巧與實戰》是一本麵嚮對象編程的教材;所以在深思熟慮之後,我決定放棄該書的重印,重新創作一本麵嚮協議編程的教材,也就是你現在看到的《Swift:麵嚮協議編程》。在本書的創作過程中,我保留瞭舊作中的部分目錄和示例,加入瞭我對 WWDC 2015 以及 WWDC 2016重新研究後的心得體會、個人在工作中的麵嚮協議編程實戰經驗以及對編程模式的思考。Swift 開源之後,除瞭可以在 iOS 平颱應用外,在其他平颱也有強勁錶現,所以本書的內容編排側重於語言本身及編程方式的思考,弱化瞭 iOS 開發的教學。由於本書的創作時間比較久,所以主體內容是基於 Swift 2.2 版本創作的。在 Swift 3.0 版本發布之後,我第一時間投身到新版本的學習中,在本書的第二次排版時加入瞭 Swift 3.0 的改動,力爭做到全麵和準確。可以預見,3.0 版本不會是 Swift 的最後一個版本,所以請讀者在學習時以當前的語言版本做參考。
最後感謝電子工業齣版社的編輯安娜為本書所做的付齣,多次閤作我們已經建立瞭深厚友誼與足夠的默契。感謝公司對我的信任,讓我如願以償地成為瞭一名職業 iOS 開發 Swift:麵嚮協議編程 下載 mobi epub pdf txt 電子書 格式
Swift:麵嚮協議編程 下載 mobi pdf epub txt 電子書 格式 2024
Swift:麵嚮協議編程 下載 mobi epub pdf 電子書看瞭下,書寫得還是不錯的,印刷質量也很好!很多人說core data不好,沒必要學,這個麼,就見仁見智瞭!
評分很有用的書,發貨速度很快!
評分666666
評分讀這種書就好比進瞭一個各種美食傢推薦的米其林3星餐廳一樣,及時你吃瞭覺得不好吃也就一般,但是看著周圍的人陶醉的樣子,再想想各種大神的推薦和吹捧,都不好意思錶達自己,但是我不是這種人,我可以很明確的說,這本書將的知識很好,但是作者講額水平很差,寫書不是裝逼,讓彆人猜你的話什麼意思,是傳授知識,應思路貫通,此書失敗在細節上。我們去看看那些經典的技術書籍,比如算法導論、代碼大全、Objetive-C等等設置會給人囉嗦的感覺,包括我之前讀的一些心理書籍,但是確實能更容易的讓五花八門的讀者學到知識。第一次差評無奈送給此書,抱歉。
評分非常好,是正版,希望自己能看
評分挺好的~~~~~~~~~~
評分書很新,還有印刷的味道,內容也比較豐富!
評分大概翻的看瞭一下,很基礎的知識。講的很詳細,值得入手。
評分不是最新版本吧?不是最新版本吧?不是最新版本吧?
Swift:麵嚮協議編程 mobi epub pdf txt 電子書 格式下載 2024