
下载免费的 Kindle 阅读软件,即可立即在智能手机、平板电脑或电脑上阅读 Kindle 电子书 - 无需 Kindle 设备。了解更多信息
使用 Kindle 网页版即时在浏览器上阅读。
使用手机摄像头 - 扫描以下代码并下载 Kindle 阅读软件。

![“Swifter:100个Swift开发必备Tip”,作者:[王巍]](https://images-cn.ssl-images-amazon.cn/images/I/41xPUO78nyL._SX260_.jpg)
Swifter:100个Swift开发必备Tip Kindle电子书
广告
《Swifter : 100 个 Swift 开发必备 Tip》内容提要
作者赴美参加了Apple 的WWDC 14,亲眼见证了Swift 的发布,并从这门语言正式诞生的第一分钟就开始学习和钻研。在《Swifter : 100 个 Swift 开发必备 Tip》中作者将自己的经验加以总结和整理,以一个个的小技巧和知识点的形式揭示出来。全书共有100 节,每一节都是一个相对独立的主题,涵盖了一个中高级开发人员需要知道的Swift 语言的方方面面。
《Swifter : 100 个 Swift 开发必备 Tip》非常适合用作官方文档的参考和补充,相信也会是iOS 中级开发人员很喜爱的Swift 进阶读本。
作者赴美参加了Apple 的WWDC 14,亲眼见证了Swift 的发布,并从这门语言正式诞生的第一分钟就开始学习和钻研。在《Swifter : 100 个 Swift 开发必备 Tip》中作者将自己的经验加以总结和整理,以一个个的小技巧和知识点的形式揭示出来。全书共有100 节,每一节都是一个相对独立的主题,涵盖了一个中高级开发人员需要知道的Swift 语言的方方面面。
《Swifter : 100 个 Swift 开发必备 Tip》非常适合用作官方文档的参考和补充,相信也会是iOS 中级开发人员很喜爱的Swift 进阶读本。
商品描述
名人推荐
这本书非常适合从 Objective-C 迁移至 Swift 的开发者,将两个语言的实现做对比,着眼于差异和特性,每个 Tip 都清晰明了。作为国内 Swift 圈里的先行者之一,作者填过的“坑”、总结的技巧,让后续开发者面对这门语言时更有信心。与 Swift 官方手册一样,我相信它将成为这门新语言必备的工具书。
——孙源 90后 iOS 开发者,现就职于百度,多次在北京组织 iOS 开发者线下分享会
当 Swift 还是满面疮痍的时候,Onevcat 用谨慎、优雅与睿智为我们填平了这一切,每一位优秀的 Swifter 都应该把这本书放在枕边,像情人一样,每晚翻阅一下。
——周楷雯 Catch 团队创始人
Swift 作为 iOS 和 Mac 开发的趋势,值得每一位 Apple 开发者投注精力。本书站在更高的视角,审视了 Swift 的新语法、新特性以及从 Objective C 转向 Swift 的方方面面。书中的示例深入浅出,讲解直击要害、重点突出,读者阅后定有醍醐灌顶之感。不过需要指出的是这并不是一本 Swift 的入门书,本书的最佳受众是有 Objective-C 经验的开发者。
——郭中强,前行中的独立开发者,正在打造一个让人愉悦的 GitHub 客户端
这本书罗列了 Swift 的各种特性和它们的适用场景,作者分享了不少宝贵的使用经验,使读者对 Swift 的理解进入更深的层次。
——知名 Swift 开源项目 LTMorphingLabel 作者 汤圣罡 --此文字指其他 kindle_edition 版本。
——孙源 90后 iOS 开发者,现就职于百度,多次在北京组织 iOS 开发者线下分享会
当 Swift 还是满面疮痍的时候,Onevcat 用谨慎、优雅与睿智为我们填平了这一切,每一位优秀的 Swifter 都应该把这本书放在枕边,像情人一样,每晚翻阅一下。
——周楷雯 Catch 团队创始人
Swift 作为 iOS 和 Mac 开发的趋势,值得每一位 Apple 开发者投注精力。本书站在更高的视角,审视了 Swift 的新语法、新特性以及从 Objective C 转向 Swift 的方方面面。书中的示例深入浅出,讲解直击要害、重点突出,读者阅后定有醍醐灌顶之感。不过需要指出的是这并不是一本 Swift 的入门书,本书的最佳受众是有 Objective-C 经验的开发者。
——郭中强,前行中的独立开发者,正在打造一个让人愉悦的 GitHub 客户端
这本书罗列了 Swift 的各种特性和它们的适用场景,作者分享了不少宝贵的使用经验,使读者对 Swift 的理解进入更深的层次。
——知名 Swift 开源项目 LTMorphingLabel 作者 汤圣罡 --此文字指其他 kindle_edition 版本。
目录
推荐序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 --此文字指其他 kindle_edition 版本。
序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 --此文字指其他 kindle_edition 版本。
作者简介
王巍 (onevcat) 是来自中国的一线 iOS 开发者,毕业于清华大学。在校期间就开始进行 iOS 开发,拥有丰富的 Cocoa 和 Objective-C 开发经验,另外他也活跃于使用 C# 的 Unity3D 游戏开发界。曾经开发了《小熊推金币》,《Pomo Do》等一系列优秀的 iOS 游戏和应用。在业余时间,王巍会在 OneV’s Den 撰写博客,分享他在开发中的一些心得和体会。另外,王巍还是翻译项目 objc 中国的组织者和管理者,为中国的 Objective-C 社区的发展做出了贡献。同时,他也很喜欢为开源社区贡献代码,是著名的 Xcode 插件 VVDocumenter 的作者。现在王巍旅居日本,并就职于即时通讯软件公司 Line,从事 iOS 开发工作,致力于为全世界带来更好体验和功能的应用。 --此文字指其他 kindle_edition 版本。
文摘
序言
推荐序
让雨燕飞翔
在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 的开发者提供一些参考,以期能迅速提升他们在实践中的能力。因为这部分的中 --此文字指其他 kindle_edition 版本。
让雨燕飞翔
在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 的开发者提供一些参考,以期能迅速提升他们在实践中的能力。因为这部分的中 --此文字指其他 kindle_edition 版本。
基本信息
- ASIN : B01I4PR0BY
- 出版社 : 电子工业出版社; 第1版 (2016年6月14日)
- 出版日期 : 2015年5月1日
- 品牌 : 博文视点
- 语言 : 简体中文
- 文件大小 : 2225 KB
- 标准语音朗读 : 未启用
- X-Ray : 未启用
- 生词提示功能 : 未启用
- 纸书页数 : 262页
- 亚马逊热销商品排名: 商品里排第85,629名Kindle商店 (查看Kindle商店商品销售排行榜)
- 商品里排第1,172名程序语言与软件开发
- 用户评分:
买家评论
4.4 颗星,最多 5 颗星
4.4星,共 5 星
9
买家评级
评分是如何计算的?
在计算总星级评分以及按星级确定的百分比时,我们不使用简单的平均值。相反,我们的系统会考虑评论的最新程度以及评论者是否在亚马逊上购买了该商品。系统还会分析评论,验证评论的可信度。