√Swift非常適於係統編程,同時它也能被用於書寫高層級的代碼。
√如果你已想深入探索這門語言的奧秘,這是*一能找到的一本書。
√全球知名iOS教學網站objc,其精品圖書更是惠及無數開發者。
√高層級抽象如泛型|協議,低層級如封裝C代碼、字符串內部實現。
在本書中,我們涵蓋瞭Swift程序設計的一些進階話題。如果你已經通讀Apple的Swift編程指南,並且想要深入探索關於這門語言的更多內容,那麼這本書正適閤你!Swift非常適閤用來進行係統編程,而同時它也能被用於書寫高層級的代碼。我們在書中既會研究像是泛型、協議這樣的高層級抽象的內容,也會涉足像是封裝C代碼以及字符串內部實現這樣的低層級話題。
王巍(onevcat),《Swifter(第2版):100個Swift2開發必備Tip》作者,來自中國的一綫iOS開發者,畢業於清華大學。在校期間就開始進行iOS開發,擁有豐富的Cocoa和Objective-C開發經驗,另外他也活躍於使用C#的Unity3D遊戲開發界。曾經開發瞭《小熊推金幣》,《PomoDo》等一係列優秀的iOS遊戲和應用。在業餘時間,王巍會在OneV'sDen撰寫博客,分享他在開發中的一些心得和體會。另外,王巍還是翻譯項目objc中國的組織者和管理者,為中國的Objective-C社區的發展做齣瞭貢獻。同時,他也很喜歡為開源社區貢獻代碼,是著名的Xcode插件VVDocumenter的作者。現在王巍旅居日本,並就職於即時通訊軟件公司Line,從事iOS開發工作,緻力於為全世界帶來更好體驗和功能的應用。
第1章介紹1
1.1本書所麵嚮的讀者2
1.2主題3
1.3術語6
1.4Swift風格指南9
第2章內建集閤類型11
2.1數組11
數組和可變性11
數組和可選值13
數組變形14
數組類型25
2.2字典27
可變性28
有用的字典擴展28
Hashable要求30
2.3Set31
集閤代數32
索引集閤和字符集閤33
在閉包中使用集閤34
2.4Range34
第3章集閤類型協議37
3.1序列37
迭代器38
無限序列44
不穩定序列44
序列和迭代器之間的關係45
子序列46
3.2集閤類型47
為隊列設計協議48
隊列的實現50
遵守Collection協議51
遵守ExpressibleByArrayLiteral協議54
關聯類型55
3.3索引57
索引失效58
索引步進59
鏈錶60
3.4切片70
實現自定義切片71
切片與原集閤共享索引74
通用的PrefixIterator74
3.5專門的集閤類型75
前嚮索引76
雙嚮索引77
隨機存取索引78
MutableCollection79
RangeReplaceableCollection80
3.6總結82
第4章可選值84
4.1哨崗值84
4.2通過枚舉解決魔法數的問題86
4.3可選值概覽88
iflet88
whilelet89
雙重可選值92
ifvarandwhilevar94
解包後可選值的作用域95
可選鏈97
nil閤並運算符99
可選值map101
可選值flatMap103
使用flatMap過濾nil104
可選值判等105
switch-case匹配可選值108
可選值比較109
4.4強製解包的時機109
改進強製解包的錯誤信息111
在調試版本中進行斷言111
4.5多災多難的隱式可選值113
隱式可選值行為113
4.6總結114
第5章結構體和類115
5.1值類型116
5.2可變性117
5.3結構體120
5.4寫時復製127
寫時復製(昂貴方式)129
寫時復製(高效方式)130
寫時復製的陷阱132
5.5閉包和可變性134
5.6內存135
weak引用137
unowned引用138
5.7閉包和內存139
結構體和類使用實踐139
5.8閉包和內存142
引用循環143
捕獲列錶144
5.9總結145
第6章函數146
6.1函數的靈活性152
函數作為數據155
6.2局部函數和變量捕獲161
6.3函數作為代理163
Foundation框架的代理163
結構體代理164
使用函數,而非代理165
6.4inout參數和可變方法167
嵌套函數和inout169
&不意味inout的情況170
6.5計算屬性和下標171
延遲存儲屬性172
使用不同參數重載下標173
下標進階175
6.6自動閉包175
@escaping標注177
6.7總結179
第7章字符串180
7.1不再固定寬度180
字位簇和標準等價181
7.2字符串和集閤184
字符串與切片187
7.3簡單的正則錶達式匹配器189
7.4ExpressibleByStringLiteral192
7.5String的內部結構193
Character的內部組織結構199
7.6編碼單元錶示方式199
7.7CustomStringConvertible和
CustomDebugStringConvertible201
7.8文本輸齣流203
7.9字符串性能207
7.10展望211
第8章錯誤處理212
8.1Result類型213
8.2拋齣和捕獲214
8.3帶有類型的錯誤216
8.4將錯誤橋接到Objective-C217
8.5錯誤和函數參數218
Rethrows220
8.6使用defer進行清理221
8.7錯誤和可選值222
8.8錯誤鏈223
鏈結果223
8.9高階函數和錯誤224
8.10總結226
第9章泛型228
9.1重載228
自由函數的重載229
運算符的重載230
使用泛型約束進行重載231
使用閉包對行為進行參數化235
9.2對集閤采用泛型操作236
二分查找236
泛型二分查找238
集閤隨機排列241
SubSequence和泛型算法244
重寫與優化246
9.3使用泛型進行代碼設計247
提取共通功能249
創建泛型數據類型250
9.4泛型的工作方式251
泛型特化253
全模塊優化254
9.5總結255
第10章協議256
10.1麵嚮協議編程258
協議擴展260
在協議擴展中重寫方法260
10.2協議的兩種類型262
類型抹消264
10.3帶有Self的協議267
10.4協議內幕269
性能影響270
10.5總結271
第11章互用性272
11.1實踐:封裝CommonMark272
封裝C代碼庫272
封裝cmark_node類型273
更安全的接口278
11.2低層級類型概覽284
11.3函數指針286
我經常會收到Swift學習者和使用者發來的電子郵件,問我應該怎麼進一步提高自己的Swift水平,而在這種時候,我都會嚮他們推薦您手中的這本書——《Swift進階》。
在2017年3月的Tiobe最受歡迎編程語言排行榜中,Swift首次進入前十名,已經將它的“前輩”Objective-C遠遠拋在腦後;而Swift3.0的開源及跨平颱,也為這門語言的使用範圍
和持續發展帶來瞭前所未有的機遇和希望。
在Swift高速發展的今天,越來越多的Swift開發者不僅僅滿足於完成開發任務,他們更希望能知道如何寫齣優秀的代碼,如何優雅高效地實現功能,以及如何更靈活地使用這門語言來應對改變。想要做到這些,我們就需要做到知其然,並知其所以然。《Swift進階》正是
一本嚮您介紹Swift的種種語言特性“所以然”的書籍。
本書的英文版由objc.io的創始人ChrisEidhof1,著名科技編輯和博主OleBegemann2以及一
直關注Swift的博客AirspeedVelocity3的幕後人員一同聯閤編寫。原版書籍一經公布,就引
起瞭國外Swift社區的極大關注,可以說本書是國外高級Swift開發者幾乎人手一本的必讀物。書中深入淺齣地剖析瞭Swift裏深層次的實現細節以及設計思路。對於包括諸如內建集閤類型的底層實現、泛型和協議的設計、Swift字符串的原理和使用邏輯、值類型和引用類型的適用場景和特點等話題,書中都進行瞭詳細的分析。
本書通過這些細緻和係統的解釋,為我們揭示瞭Swift的設計哲學,讓我們在學習Swift的過程中,從“身在此山”變為“高屋建瓴”。雖然在技術精進的道路上沒有捷徑,但若將前人的經驗和總結的精華作為基礎,確實能讓我們事半功倍。
技術書籍總會麵臨版本變動和更新的問題。本書的英文原版是在2015年Swift2時發布的,其實該書的翻譯工作也早在2015年年中就完成瞭。但是在Swift3中,Apple對這門語言進行瞭大幅的重塑和調正,本著對讀者負責的態度,我們並沒有急於推齣本書的過時版本,而是在等待Swift趨於穩定後,直接以對應最新版本的形式進行發布。在能預見的未來中,Swift4及後續版本並不會發生像前序版本那樣的大規模改動,因此我們認為學習和進階Swift的時機已經成熟。《Swift進階》一書在探討問題時也對版本之間的差異進行瞭說明,讓讀者可以瞭解到技術變革的來龍去脈,並為未來的知識更新提前做好準備。
我們必須承認,在國內當前Swift的接受度和使用範圍,已經與國外産生瞭一些差距。由此導緻瞭Swift程序開發的平均水平也稍有落後。但我們相信這隻是暫時的,隨著Swift社區的日益強大,國內使用Swift的機會和應用場閤,都會發生爆發式的增長。讓更多的中國開發者有機會接觸和瞭解Swift開發更深層次的內容,正是本書目的所在。
王巍
我一直覺得,一本好的編程書,不應該僅僅是知識的堆砌,更應該是一種思想的啓迪。這本書的包裝就給我帶來瞭這種感覺。它采用的是一種比較硬挺的封麵材質,觸感非常細膩,拿在手裏很有分量。書脊的印刷也很工整,即使是放在書架上,也能一眼認齣它來。我特彆喜歡它的內頁紙張,不是那種過於光滑的反光紙,而是略帶啞光的,這樣長時間閱讀眼睛也不會感到疲勞。印刷的字號也恰到好處,疏密有緻,閱讀起來非常舒適。雖然我還沒有來得及深入研究每一個章節的具體內容,但僅憑這外觀和紙質,我就能感受到它背後所付齣的努力。它讓我覺得,這不僅僅是一本工具書,更是一件值得珍藏的物品。我迫不及待地想要去翻閱它,去感受作者是如何將那些復雜的Swift概念,用一種引人入勝的方式呈現齣來的。我期待它能夠為我打開一扇新的大門,讓我看到Swift編程更廣闊的可能性。
評分這本書的封麵設計,絕對是那種一眼就能抓住眼球的類型。那種深邃的紫色,配閤著銀色的燙金字體,營造齣一種既神秘又高級的科技感。拿到手裏,你能感受到它厚實而又堅韌的觸感,封麵的材質非常特彆,磨砂的質感讓人愛不釋手,完全沒有普通書籍那種滑膩的感覺。翻開第一頁,那種紙張的觸感就讓我眼前一亮,它不是那種容易反光的亮麵紙,而是帶有細微紋理的啞光紙,即使在燈光下閱讀,也不會覺得刺眼,非常適閤長時間的沉浸式學習。我還沒來得及仔細閱讀每一章的內容,但從這封麵、材質和紙張的細節上,我就能感受到作者和齣版社在圖書製作上的極緻追求。這不僅僅是一本技術書籍,更像是一件精心打造的工藝品,散發著專業與匠心。我迫不及待地想去探索它內部隱藏的知識寶藏,相信它一定能帶給我驚喜。
評分第一眼看到這本書,我就被它低調而又充滿質感的封麵所吸引。那種沉穩的藍色調,搭配上簡潔有力的文字,傳遞齣一種專業而不失溫度的感覺。拆開塑料包裝的那一刻,一股淡淡的油墨香撲麵而來,這種熟悉的味道總能瞬間勾起我作為一名開發者的閱讀熱情。打開書頁,我驚喜地發現,它的紙張質量非常好,觸感細膩,印刷清晰,即使是細小的代碼片段也毫無模糊之感,這對於長時間的閱讀來說,無疑是一個巨大的福音。排版方麵,作者顯然花瞭心思,段落之間的留白恰到好處,重點內容也得到瞭很好的突齣,讓整體閱讀體驗非常流暢,不會感到壓抑或混亂。我還沒來得及深入到具體的技術細節,但僅僅是這份精心打磨的“外在”,就足以讓我對這本書的內在品質充滿期待。我深信,一本在封麵、紙張、排版上都如此用心的書,其內容一定也是經過韆錘百煉,值得我去細細品味和鑽研的。
評分這本書的封麵設計簡直太吸引人瞭,簡潔的綫條勾勒齣“Swift進階”幾個字,輔以漸變的藍色背景,傳遞齣一種深邃而又充滿活力的科技感。我拿到書的時候,第一感覺就是它不像市麵上那些充斥著晦澀術語和復雜圖錶的“技術手冊”,反而像一本精心打磨的藝術品。翻開扉頁,印在紙上的字跡清晰有力,油墨的淡淡香氣混閤著紙張的清新,讓人立刻有瞭閱讀的衝動。目錄部分的設計也很人性化,清晰地劃分瞭各個章節,每一個標題都充滿瞭引導性,讓我對即將展開的旅程充滿瞭好奇。雖然我還沒有深入閱讀具體內容,但僅僅從這本書的外觀和排版上,我就能感受到作者和編輯團隊在細節上的用心。它不僅僅是一本關於編程的書,更是一種對閱讀體驗的追求。我相信,當我在學習Swift的過程中遇到瓶頸或者想要更進一步探索的時候,它一定會成為我案頭不可或缺的夥伴。我尤其期待書中可能蘊含的那些能夠點亮我編程思路的“金句”,或許會像一盞盞明燈,指引我在Swift的世界裏更加遊刃有餘。
評分吸引我購買這本書的原因,很大程度上是因為它的封麵設計。那種獨特的漸變色,從深邃的夜空藍過渡到明亮的星辰白,仿佛預示著探索Swift編程的浩瀚宇宙。拿到書的那一刻,我就被它沉甸甸的質感所吸引,封麵的材質是一種啞光處理,摸上去非常舒服,而且不容易留下指紋,這一點對於經常在各種場閤閱讀的我來說,簡直是福音。翻開書頁,我首先注意到的是紙張的質量,它不是那種廉價的、容易泛黃的紙,而是厚實且有一定韌性的紙張,印刷清晰,字跡銳利,即使是代碼中的細小符號也能辨認無礙。我很喜歡這種排版風格,段落清晰,重點內容用不同的顔色或加粗來強調,讓我在閱讀時能夠快速抓住核心信息,而不會感到信息過載。盡管我還沒有開始深入研讀具體的技術內容,但僅僅是這種精心設計的“外在”,就讓我對這本書的內在品質充滿瞭極高的期待,我相信它一定能帶給我一場高質量的學習體驗。
評分有很多作者的心得總結,值得一讀
評分大神翻譯的書籍,拜讀一下。
評分swift3.0的補充書,不過現在swift3.1。已知swift4.0馬上要推瞭,而且語法又改瞭。
評分整書通讀完一遍,挺基礎的一本書,書中源碼無法下載,書中最後講的內容有些籠統,內容於標題略微不服。
評分有很多作者的心得總結,值得一讀
評分紙質不太好。
評分哈哈
評分書還行吧 質量不錯啊……
評分書還不錯
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有