Swifter : 100 個 Swift 開發必備 Tip ( 簡體 字) |
作者:王巍 | 類別:1. -> 程式設計 -> 手機程式 -> Swift |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 41406 詢問書籍請說出此書號!【有庫存】 NT售價: 345 元 |
出版日:5/1/2015 |
頁數:280 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121257964 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:推薦序 讓雨燕飛翔 在2014 年6 月之前,如果我們在Google 中輸入“Swift”進行查找,搜到的是美國創作型歌手、大美女泰勒·斯威夫特。今天我們再去做同樣的檢索,搜索結果是一門編程語言,這門編程語言的名字就叫作“Swift”,它的Logo 是一只極速飛翔的雨燕。 Swift 是Apple 公司在2014 年WWDC 大會上推出的一門新語言,用于在iOS/OS X 平臺上開 發應用程序,之前獨霸這個龐大平臺的語言一直是Objective-C。可以說Swift 是我所見過關注度最高的新語言,剛推出即萬眾矚目,媒體和開發者在數天之內對Swift 進行了集中的報道和討論,英文手冊迅速被翻譯成中文,即使是谷歌2009 年推出Go 語言時也沒有如此浩大的聲勢。時至今日,已經有大量的獨立應用是基于Swift 開發構建的。 2007 年之前,Objective-C 一直是Apple 自家后院的小眾語言,iOS 移動設備的爆發讓這門語言的普及率獲得了火箭一般的躥升速度,截止到今天,Objective-C 在編程語言排行榜上排名第三,江湖人稱三哥。Apple 一直在不遺余力地優化Objective-C,包括把GCC 的編譯鏈替換成LLVM + GCC,又替換成LLVM + Clang,做語法簡化、自動引用計數、增加Blocks 和GCD 多線程異步處理技術……既然已經全盤掌握了LLVM 和Clang 技術,為什么不開發一門新語言呢?于是Swift 語言誕生了。 Swift 的作者是天才的70 后程序員Chris Lattner,他同時是LLVM 項目的主要發起人與作者之一、Clang 編譯器的作者。Chris 畢業的時候正是Apple 為了編譯器焦頭爛額的時候,因為Apple 之前的軟件產品都依賴于整條GCC 編譯鏈,而開源界的大爺們并不買Apple 的賬,他們不愿意專門為了Apple 公司的需求優化和改進GCC 代碼,所以Apple 經過慎重的考慮后將編譯器后端替換為LLVM,并且把Chris 招入麾下。Chris 進入了Apple 之后如魚得水,不僅大幅度優化和改進LLVM 以適應Objective-C 的語法變革和性能要求,同時發起了Clang項目,旨在全面替換GCC。這個目標已經實現了,從OS X 10.9 和XCode 5 開始,LLVM +GCC 已經被替換成了LLVM + Clang。 Swift 是Chris 在LLVM 和Clang 之后第三個偉大的項目! Swift 是一門博采眾長的現代語言,在設計的過程中,Chris 參考了Objective-C、Rust、Haskell、Ruby、Python、C# 等優秀語言的特點,Swift 的語法特性最終形成。Swift 是面向Cocoa 和Cocoa Touch 的編程語言,編譯型,類型安全,生產環境的代碼都需要LLVM 編譯成本地代碼才能執行,但是Swift 又具備很多動態語言的語法特性和交互方式,支持各種高級語言特性,包括閉包、泛型、面向對象、多返回值、可選變量、類型接口、元組、集合等。 很顯然,這是一門準備取代Objective-C 的編程語言,它將吸引更多的開發者加入蘋果的軟件生態圈,為iOS 和OS X 開發出更為豐富的App。如果你是App Store 的開發者,推薦盡早學習和掌握這門蘋果力推的新語言。對于大部分新事物來說,越早介入,收獲越大。 Swift 入門并不困難,Apple 公司甚至為這門語言提供了所寫即所得的Playground 功能,不僅實現了很多腳本語言支持的交互式編程,而且提供控制臺輸出、實時圖形圖像、時間線(timeline)變量跟蹤等功能,開發者除了可以看到代碼的實時運行結果,還能根據時間線閱讀某個變量在代碼片段中值的變化。這真是太棒了!另外,閱讀官方提供的《The Swift Programming Language》也是快速入門的途徑,Cocoa 開發者社區甚至在第一時間提供了高質量的中譯本。 問題的關鍵是入門了之后怎么辦?當你讀完教程學習了語法,自覺成竹在胸拔劍四顧的時 候,突然發現Swift 在實際的項目應用中會出現各種各樣的問題,就像你手持一柄玄鐵重劍,卻無法洞悉劍訣的奧秘。如何讓“雨燕”迅疾地飛翔?這就是《Swifter:100 個Swift 開發必備Tip》這本書要解決的問題。 本書作者王巍是我非常尊敬的一位iOS 開發者,他的網絡ID 是“onevcat”,大家都叫他喵神。王巍畢業于清華大學,在校期間就對iOS 開發一往情深,曾經開發出《小熊推金幣》《Pomo Do》等一系列優秀的iOS 游戲和應用。工作和開發之余,王巍也在參與iOS 開發社區的建設,比如發起和組織翻譯項目“objc 中國”,開源Xcode 插件VVDocumenter 項目等,這本《Swifter:100 個Swift 開發必備Tip》同樣是他對社區的貢獻之一。 王巍是一個在技術上對自己有要求的程序員,在涉及的每個領域,他都希望能夠做到庖丁 解牛,游刃有余。既能洞悉全局,又可直達細節。王巍2014 年赴美參加了Apple 的WWDC 大會。可以說,從Swift 誕生的那一分鐘起,王巍就開始學習和研究這門語言。他在自己的博文《行走于Swift 的世界中》闡述了大量Swift 的語法細節和底層實現機制,并對這篇文章進行了持續的更新,這篇文章在Swift 社區獲得了巨大的反響。之后,王巍持續學習Swift語言,并進行了編程實踐和項目實戰,他把自己的學習心得和編程技巧進行了梳理和完善,最終形成了這本《Swifter:100 個Swift 開發必備Tip》。書中共有100 個Swift 編程技巧,幾乎涵蓋了Swift 語言的所有細節,每篇獨立成文,可拆可合,讀者可以隨時翻閱,也可以遇到實際問題后再來檢索。 這本書最早的版本是電子書,我在它出版的第一時間就買了來讀,之后隨用隨讀,這本書 讓我對Swift 語言有了更為深入的了解,也解決了我的團隊在開發過程中的很多實際問題。 所以,當獲知王巍的這本書要出紙版的時候,我覺得我有責任讓更多的人知道這本書。在 目前這樣一個知識版權認知匱乏的年代,優秀的原創作者總是值得尊敬,他們的圖書作品 也值得我們珍惜,我希望把這本書推薦給每一個iOS 開發者,它值得我這么做。 目前王巍旅居日本,就職于即時通信軟件公司Line。他依然行走在修行的路上,孜孜以求 創意之源。祝愿在未來的日子里,王巍能為這個世界呈現更好的軟件產品和技術圖書。落 花無言,人淡如菊,書之歲華,其曰可讀。這大概就是王巍目前的寫照。 作為開發者,我們要做的就是找到這個領域的燈塔,閱讀、學習,然后Write the code, Change the world,并期待下一個收獲的季節! 祝大家學得開心! 池建強 《MacTalk·人生元編程》作者 微信平臺MacTalk 出品人 2015 年,春
序 雖然我們都希望能盡快開始在Swift 的世界里遨游,但是我覺得仍然有必要花 一些時間對本書的寫作目的和適合哪些讀者進行必要說明。我不喜歡自吹自 擂,也無法承擔“騙子” 的罵名。在知識這件嚴肅的事情上,我并不希望對讀者 產生任何誤導。作為讀者,您一定想要找一本適合自己的書;而作為作者,我 也希望找到自己的伯樂和子期。 為什么要寫這本書 中文的科技書太少了,內容也太淺了。這是國內市場尷尬的現狀,真正有技術的大牛不在 少數,但他們很多并不太愿意通過出書的方式來分享他們的知識,一方面原因是回報率實 在太低,另一方面是出版的流程過于煩瑣。這就導致了市面上充斥著一些習慣于出版業務,但是卻絲毫無視質量和素質的“流氓”作者,以及他們制造的“流水線”圖書。 特別是對于Swift 語言來說,這個問題尤其嚴重。iOS 開發不可謂不火熱,每天都有大量的開發者涌入這個平臺。而Swift 的發布更使得原本高溫的市場更上一層樓。但是市面上隨處可見的都是各種《××× 開發指南》《××× 權威指南》或者《21 天學會×××》式的中文資料。 這些圖書大致都是對官方文檔的翻譯,并沒有什么實質的見解,可以說內容單一,索然無 味。作為讀者,很難理解作者寫作的重心和目的(其實說實話,大部分情況下這類書的作 者自己都不知道寫作的重心和目的是什么),這樣的“為了出版而出版” 的圖書可以說除了增加世界的熵以外,幾乎毫無價值。 如果想要入門Swift 語言,閱讀Apple 官方教程和文檔無論從條理性和權威性來說,都是更好的選擇。而中國的Cocoa 開發者社區也以令人驚嘆的速度完成了對文檔的高品質翻譯,這在其他任何國家都是讓人眼紅的一件事情。因此,如果您初學程序設計或者Swift 語言,相比起那些“泯滅良心”(抱歉我用了這個詞,希望大家不要對號入座)的“入門書籍”,我更推薦您看這份翻譯后的官方文檔1,這是非常珍貴的資源。 說到這里,可以談談這本《Swifter:100 個Swift 開發必備Tip》的寫作目的了。很多Swift 的學習者,包括新接觸Cocoa/Cocoa Touch 開發的朋友,以及之前就使用Objective-C 的朋友,所面臨的一個共同的問題是,入門以后應該如何進一步提高。也許你也有過這樣的感受:在閱讀完Apple 的教程后,覺得自己已經學會了Swift 的語法和使用方式,你滿懷信心地打開Xcode,新建了一個Swift 項目,想寫點什么,卻發現實際上不是那么回事。你需要聯想Optional 應該在什么時候使用,你可能發現本已熟知的API 突然不太確定要怎么表達,你可能遇到怎么也編譯不了的問題但卻不知如何改正。這些現象都非常正常,因為教程是為了展示某個語法點而寫的,而幾乎不涉及實際項目中應該如何使用的范例。本書的目的就是為廣大已經入門了Swift 的開發者提供一些參考,以期能迅速提升他們在實踐中的能力。因為這部分的中級內容是我自己力所能及,有自信心能寫好的,也是現在廣大Swift 學習者所缺乏和急需的。 這本書是什么 本書是Swift 語言的知識點的集合。我自己是赴美參加了Apple 的WWDC 14 的,也正是在 這屆開發者大會上,Swift 橫空出世。毫不夸張地說,從Swift 正式誕生的第一分鐘開始,我就在學習這門語言。雖然天資駑鈍,不得其所,但是在這段集中學習和實踐的時間里,也還算總結了一些心得,而我把這些總結加以整理和示例,以一個個的小技巧和知識點的形式,編寫成了這本書。全書共有100 節,每一節都是一個相對獨立的主題,涵蓋了一個中高級開發人員需要知道的Swift 語言的方方面面。 這本書非常適合用作官方文檔的參考和補充,也會是中級開發人員很喜愛的Swift 進階讀 本。具體每節的內容,可以參看本書的目錄。 這本書不是什么 這本書不是Swift 的入門教程,也不會通過具體的完整實例引導你用Swift 開發出一個像是計算器或者記事本這樣的app。這本書的目的十分純粹,就是探索那些不太被人注意,但 是又在每天的開發中可能經常用到的Swift 特性。這本書并不會系統地介紹Swift 的語法和特性,因為基于本書的寫作目的和內容特點,采用松散的模式和非線性的組織方式會更加適合。 換言之,如果你是想找一本Swift 從零開始的書,那這本書不應該是你的選擇。你可以在閱讀Apple 文檔后再考慮回來看這本書。 組織形式和推薦閱讀方式 100 個Tip 其實不是一個小數目。本書每節的內容是相對獨立的,也就是說你沒有必要從頭開始看,隨手翻開到任何一節都是沒問題的。當然,按順序看是最理想的閱讀方式,因為在寫作時我特別注意了讓靠前的節不涉及后面節的內容;另一方面,位置靠后的節如果涉及之前節的內容的話,我添加了相關節的交叉引用,這可以幫助迅速復習和回顧之前的內容。我始終堅信不斷地重復和鞏固,是真正掌握知識的唯一途徑。 您可以通過目錄快速地在不同節之間選擇自己感興趣或需要了解的內容。如果遇到您不感 興趣或者已經熟知的節,您也完全可以暫時先跳過去,這不會影響您對本書的閱讀和理解。 建議您閱讀本書時開啟Xcode 環境,并且對每一節中的代碼進行驗證,這有利于您真正理 解代碼示例想表達的意思,也有利于記憶的形成。每一段代碼示例都不太長,卻經過了精心的準備,能很好地說明本節內容,希望您在每一處都能通過代碼和我進行心靈上的“對話”。 代碼運行環境 書中每一節基本都配有代碼示例的說明。這些代碼一般來說包括Objective-C 或者Swift 的代碼。理論上來說所有代碼都可以在Swift 1.1 (也就是Xcode 6.1)版本環境下運行。當然因為Swift 版本變化很快,可能部分代碼需要微調或者結合一定的上下文環境才能運行,但我相信這種調整是顯而易見的。如果您發現明顯的代碼錯誤和無法運行的情況,歡迎隨時與我聯系,我將盡快修正。 如果沒有特別說明,這些代碼在Playground 和項目中都應該可以運行,并擁有同樣表現。 但是也存在一些代碼只能在Playground 或者項目文件中才能正確工作的情況,這主要是因 為平臺限制的因素,如果出現這種情況,我都會在相關節中特別加以說明。 勘誤和反饋 Swift 仍然在高速發展中,本書當前版本是基于Swift 1.1 的。隨著Swift 的新特性引入及錯誤修正,本書難免會存在部分錯誤或者過時的情況。雖然我會隨著Swift 的發展繼續不斷完善和修正這本書,但是這個過程亦需要時間。 另外由于作者水平有限,書中也難免會出現一些錯誤或者紕漏,如果您在閱讀時發現了任 何問題,可以直接向我反饋,我將盡快確認和修正。 致謝與提醒 首先想感謝您購買了這本書。我其實是懷著忐忑的心情寫下這些文字的,小心翼翼地希望 沒有觸動太多人。這本書所提供的知識我想應該是超過它的售價的,但在選擇前還是請您 再三考慮。 |
內容簡介:本書是 Swift 語言的知識點的集合,本書的寫作目的是為廣大已經入門了 Swift 的開發者提供一些參考,以期能迅速提升他們在實踐中的能力。本書非常適合用作官方文檔的參考和補充,也是中級開發人員適用的 Swift 進階讀本。本書非常適合用作官方文檔的參考和補充,也是中級開發人員適用的 Swift 進階讀本。 |
目錄:推薦序iii 序vii I Swift 新元素1 Tip 1. 柯里化(Currying) 2 Tip 2. 將protocol 的方法聲明為mutating 5 Tip 3. Sequence 6 Tip 4. 多元組(Tuple) 9 Tip 5. @autoclosure 和?? 操作符11 Tip 6. Optional Chaining 14 Tip 7. 操作符16 Tip 8. func 的參數修飾19 Tip 9. 方法參數名稱省略22 Tip 10. 字面量轉換25 Tip 11. 下標30 Tip 12. 方法嵌套32 Tip 13. 命名空間35 Tip 14. Any 和AnyObject 38 Tip 15. typealias 和泛型接口41 Tip 16. 可變參數函數44 Tip 17. 初始化方法順序46 Tip 18. Designated、Convenience 和Required 48 Tip 19. 初始化返回nil 51 Tip 20. protocol 組合54 Tip 21. static 和class 58 Tip 22. 多類型和容器61 Tip 23. default 參數64 Tip 24. 正則表達式67 Tip 25. 模式匹配70 Tip 26. … 和..< 73 Tip 27. AnyClass、元類型和.self 75 Tip 28. 接口和類方法中的Self 78 Tip 29. 動態類型和多方法81 Tip 30. 屬性觀察83 Tip 31. final 86 Tip 32. lazy 修飾符和lazy 方法89 Tip 33. find 93 Tip 34. Reflection 和MirrorType 95 Tip 35. 隱式解包Optional 98 Tip 36. 多重Optional 100 Tip 37. Optional Map 103 II 從Objective-C/C 到Swift 105 Tip 38. Selector 106 Tip 39. 實例方法的動態調用109 Tip 40. 單例111 Tip 41. 條件編譯114 Tip 42. 編譯標記116 Tip 43. @UIApplicationMain 118 Tip 44. @objc 和dynamic 120 Tip 45. 可選接口123 Tip 46. 內存管理,weak 和unowned 125 Tip 47. @autoreleasepool 132 Tip 48. 值類型和引用類型135 Tip 49. Foundation 框架137 Tip 50. String 還是NSString 139 Tip 51. UnsafePointer 141 Tip 52. C 指針內存管理144 Tip 53. COpaquePointer 和CFunctionPointer 146 Tip 54. GCD 和延時調用148 Tip 55. 獲取對象類型152 Tip 56. 自省154 Tip 57. 類型轉換157 Tip 58. KVO 160 Tip 59. 局部scope 163 Tip 60. 判等167 Tip 61. 哈希170 Tip 62. 類簇172 Tip 63. Swizzle 175 Tip 64. 調用C 動態庫178 Tip 65. 輸出格式化180 Tip 66. Options 182 Tip 67. 性能考慮184 Tip 68. 數組enumerate 186 Tip 69. 類型編碼@encode 188 Tip 70. C 代碼調用和@asmname 190 Tip 71. sizeof 和sizeofValue 192 Tip 72. delegate 194 Tip 73. Associated Object 196 Tip 74. Lock 198 Tip 75. Toll-Free Bridging 和Unmanaged 200 III Swift 與開發環境及一些實踐203 Tip 76. Swift 命令行工具204 Tip 77. 隨機數生成206 Tip 78. Printable 和DebugPrintable 208 Tip 79. 錯誤處理210 Tip 80. 斷言213 Tip 81. fatalError 215 Tip 82. 代碼組織和Framework 218 Tip 83. Playground 延時運行222 Tip 84. Playground 可視化224 Tip 85. Playground 與項目協作226 Tip 86. Playground 限制228 Tip 87. 數學和數字230 Tip 88. JSON 232 Tip 89. NSNull 234 Tip 90. 文檔注釋236 Tip 91. Log 輸出238 Tip 92. 溢出240 Tip 93. 宏定義define 242 Tip 94. 屬性訪問控制244 Tip 95. Swift 中的測試246 Tip 96. Core Data 248 Tip 97. 閉包歧義250 Tip 98. 泛型擴展254 Tip 99. 兼容性256 Tip 100. 列舉enum 類型258 后記及致謝261 |
序: |