编辑推荐
适读人群 :本书适合各种层次的Swift 学习者和开发者阅读,包括拥有 Objective-C 开发经验的开发者,想要用 Swift 编写程序的爱好者等任何对 Swift 感兴趣的人。对于想要快速了解和掌握Swift 的人来说,《写给大忙人看的Swift》是一本不可多得的枕边读物。 快速掌握Swift的强大功能,避免在已知基础内容上浪费精力;
明确Objective-C与Swift的异同、适用场景及优缺点;
解析如何在已有工程中平滑地集成Swift、逐渐将代码转移至 Swift上、避免在Swift工程中引入Objective-C时遇到的陷阱;
每章配套上手练习,帮助读者深化巩固所学知识。
内容简介
《写给大忙人看的Swift》全面介绍了苹果公司新推出的 Swift 编程语言。主要内容包括 Swift 语法简介,Swift 应用程序中常见的对象模型、可空类型、泛型、函数和闭包的使用方法,Swift 代码的安全性,如何在 Swift 中使用 Objective-C 和苹果平台已有的框架,如何利用 Swift 及其新功能来创建一个应用程序等。本书作者 Matt Henderson 及 Dave Wood 是 iOS 和
OS X 开发者的领军人物,他们运用简练的语言介绍了 Swift 的相关知识。书中含有大量实战代码和课后习题,通过理论和实践相结合的方式,帮助读者迅速掌握 Swift 的主要功能和用法。
目录
第1 章 Swift 介绍 1
1.1 基本语法 4
1.1.1 变量和常量 4
1.1.2 字符串插值 7
1.1.3 流程控制 8
1.2 基本数据类型 12
1.2.1 整型 12
1.2.2 Double 和Float 14
1.2.3 布尔型 15
1.2.4 字符串 16
1.2.5 数组 17
1.2.6 字典 21
习题 22
第2 章 深入学习Swift 语法 23
2.1 可空类型 26
2.2 泛型 29
2.3 类型声明和类型推断 32
2.4 函数和闭包 33
2.4.1 全局函数 33
2.4.2 嵌套函数 34
2.4.3 闭包表达式 35
2.5 元组 36
2.6 switch 语句和模式匹配 38
习题 41
第3 章 对象和类 43
3.1 枚举 46
3.2 类 51
3.3 结构体 55
3.4 继承 57
3.5 重载 58
3.6 重写 60
3.7 初始化 61
3.8 属性 63
3.8.1 计算型属性 65
3.8.2 属性观察者 66
3.8.3 延迟属性 68
3.9 下标 69
3.10 协议 71
3.11 扩展 73
3.12 访问控制 74
目录
xx 写给大忙人看的Swift
习题 79
第4 章 可空类型 81
4.1 可空类型和nil 84
4.2 有效性检查、可空绑定和强制拆箱 86
4.3 可空链 89
4.4 带隐式拆箱的可空 94
习题 96
第5 章 泛型 99
5.1 为什么使用泛型 102
5.2 泛型函数 102
5.2.1 类型参数 103
5.2.2 使用多个类型参数 104
5.3 泛型类型 104
5.3.1 关联类型 108
5.3.2 where 子句 110
习题 111
第6 章 函数和闭包 113
6.1 函数 116
6.1.1 参数 116
6.1.2 外部参数名 117
6.1.3 参数的默认值 119
6.1.4 可变参数和inout 参数 120
6.1.5 返回类型 121
6.2 闭包 123
6.2.1 参数及返回值的类型推断 124
6.2.2 尾随闭包 125
6.3 函数式编程 126
习题 129
第7 章 使用Objective-C 131
7.1 与C 和Objective-C APIs 打交道 134
7.1.1 可空属性和返回值 135
7.1.2 AnyObject 类型 137
7.1.3 继承、扩展和协议 138
7.1.4 自动转换类型 139
7.1.5 选择器和枚举 142
7.1.6 与C 代码交互 143
7.2 在项目中同时使用Swift 和Objective-C 代码 144
习题 147
第8 章 常见模式 149
8.1 嵌套类型 152
8.2 单例 153
8.3 使用GCD 154
8.3.1 dispatch_once 155
8.3.2 dispatch_async 155
8.3.3 dispatch_after 156
8.3.4 dispatch_apply 156
8.4 Sequences 和Generators 157
8.5 运算符 161
8.5.1 运算符重载 162
8.5.2 自定义运算符 163
习题 164
索引 165
前言/序言
推荐序一
我认识周智勋是在2012 年,当时他还在DevDiv 开发者社区创业,那时我就感觉这是个翻译狂人。当时我们都是一个名为“真?iOS开发”的QQ 群的成员,这个群由国内主要的原创iOS 博客博主组成,大家会时常分享和讨论一些国外最新的关于iOS 开发的文章。周智勋除了积极地和我们讨论外,还会在讨论当晚就把那些文章译成中文放到他的博客上。
当然,这些并不能支撑他“翻译狂人”的名号。除了频繁地翻译国外的优秀博客文章外,周智勋还组织翻译了两本优秀的iOS开发书籍,分别是iOS 5 by tutorials和iOS 6 Programming Cookbook。此外,他也组织出版了多本iOS 相关的图书,包括《iOS 开发实战体验》等。
记得有一次,大伙从objc.io上看到一篇不错的英语文章,标题是“Communication Patterns”,文中介绍了iOS各种通知的方式,例如,KVO、Notification、Delegate 等。大家都在讨论这个标题如果翻译成中文,应该叫什么。有人说译成“通讯模式”,也有人说译成“通讯机制”,但总是觉得怪怪的,不太容易理解。这个时候周智勋提议译成“消息的传递机制”,大家一下子都服了,觉得翻译得非常贴切,我想这就从某种意义上显示了他的翻译功底吧。
我自己也做过一些翻译工作,但不太喜欢,我更喜欢写原创的文章。因为我认为翻译文章大多锻炼的就是翻译能力本身,而写原创文章的话,锻炼的则是知识的整理和加工能力。从我个人的角度出发,我更想做一些能够提升自己知识理解能力的事情。
所以说,做翻译的人除了爱好之外,更需要有一种分享精神,或者说是利他的奉献精神。正是因为有像周智勋这样的人不求回报地把国外的优秀iOS 开发类文章源源不断地翻译成中文,才使得广大开发者能够更快地吸收相关的开发知识。
2013 年,周智勋放弃创业,离开北京回到了老家云南,在那个四季如春的城市开始了他的新的工作。云南的互联网工作强度不像北京那么大,周智勋得以继续做他喜欢的翻译工作。能够淡泊名利,安心在云南做iOS 开发,我想这也与他做翻译以来一直不计回报的性格有关吧。除了翻译之外,周智勋其实还是一个健身爱好者,我常常看到他在朋友圈分享跑步的信息,有时候他还会参加马拉松。
由于我也经常写文章,所以认识了一些出版社的老师。当电子工业出版社的刘芸老师找我推荐iOS 图书Swift for the Really Impatient的译者时,我的脑海里蹦出来的第一个名字就是周智勋。于是,在我的引荐下,周智勋和他的几位同事很快就接手了这本书的翻译工作。
几个月后,周智勋发给了我该书的译文:《写给大忙人看的Swift》。在仔细阅读译文之后,我感觉自己做了一个非常正确的决定。整本书的翻译质量非常高,苹果公司的官方Swift 文档长达千页,但这本书以不到200页的篇幅,就将Swift 的重要知识进行了浓缩介绍,非常适合新手在没有压力的情况下,用相对短的时间,对Swift 的整体知识进行入门级的了解。
《写给大忙人看的Swift》是一本高质量的Swift 语言入门书籍,感谢电子工业出版社的引进,以及我的好友周智勋及其同伴的辛苦翻译,也祝愿本书能帮助更多人进入到iOS 的编程世界里来!
《iOS 开发进阶》作者 唐巧
2015年夏
推荐序二
乔帮主过世后,我再也没有追过凌晨一点档的发布会,总是第二天中午再下载官方的 Podcast来看,2014 年也不例外。用了八年 Mac,大部分软件新功能以及新的硬件升级对我来说都已没什么感觉。但这次的视频播放到最后十几分钟时我调高了音量,因为视频里出乎意料地介绍起了一种新的编程语言—Swift。Optional 能简化原本用Objective-C 写起来成堆的判断语句,Playground 直接显示变量的值,并且能绘制值的变化曲线。在看完视频以及社交圈大家对 Swift 的各种褒扬后,我恨不得立刻把现有的 iOS 项目都用 Swift 重写一遍。
但是,我并没有这么多时间和精力去全身心地投入到 Swift 的学习和开发中。甚至连官方的教程“The Swift Programming Language”我都只是在地铁里粗略地看了一半。正巧那时IDEO 为Quartz Composer 做了一套叫作Avocado 的插件包,我用它实现了一个弹动UITextField 的placeholder 的交互原型,便动手用 Swift来实现它的原生版本。我习惯了这种通过实战来快速入门的学习方式,想尽可能地涵盖原来Objective-C 中的一些模式,以便区分两种语言的开发方式。于是很快就有了LTBouncyPlaceholder这个开源项目,戴着“尝鲜 Swift”这个光环,居然有网友专门写了一篇博客分析这个项目的技术实现。
接着没过几天,我在 GitHub 上看到了TOMSMorphingLabel 这个实现文字变换动画的项目。这个动画最早出现在 iOS 的Messages 应用输入文字时键盘上的Quick Type 提示框中,也在 WWDC 2014 上有几秒钟的镜头。但是,总觉得用NSAttributedString实现的动画效果哪里不对劲。于是,我做了一个包含UIText-Field 的测试 App,打开 iOS 模拟器,按下“?+T”组合键打开Slow Animations 开关,反复按动键盘,观察Quick Type 提示文字的变化。看了二十分钟后,我认清了动画的每一个细节,我确信自己能比 TOMSMorphingLabel 做得更好。在花一周时间不断试验各种参数后,完全使用 Swift 编写的 LTMorphingLabel 开源了。虽然我没有使用太多 Swift 的语法特性,也没有像 TOMSMorphingLabel 那样使用现成的NSAttributedString来快速地实现动画,而是自己计算每一帧每个字符的位置,但这并不影响动画效果的呈现。而正因为如此,我能控制每一个细节,我的动画几乎和原生的一样完美。所以当Dave Verwer 在他每周一期的“iOSDev Weekly”中提到TOMSMorphingLabel 时,我骄傲地在Twitter 上把我的项目地址发给他。不过他的回复让我很意外,他说他更喜欢 TOMSMorphingLabel 的效果。当时我真想回复:“你看我这是用 Swift 写的啊,怎么也得加十分吧,而且动画更优雅,节奏更自然”,但又想到Mark Bauerlein 说的“一个人成熟的标志之一就是,明白每天发生在自己身上的 99% 的事情对于别人而言根本毫无意义”,我想既然我能做一个文字变换的动画效果,我还能做更多。半年后,我仍然没能耐心地看完“The Swift Programming Language”,但这时 LTMorphingLabel 已经有了七个文字变换动画。其中三个使用CAEmitterLayer实现粒子喷发的效果。我甚至尝试用SpriteKit 实现了更好的粒子效果,但这对于一个 UILabel 的子类来说,显然成本太高。那段时间GitHub Trending 上总能看到 LTMorphingLabel,偶尔能排到 Swift 语言分类的第一。直到年底,我把业余的精力投入到了一个新的 Swift 项目— VPN On。
虽然在这个项目开始之前,我听到不少苹果公司对于Today Widget 的功能有多么严格的限制的说法,在和朋友讨论我想做的这个Today Widget 的想法后,所有人都对我说不要做了,Today Widget 里的内容应该和Today 密切相关,苹果公司不可能让我上架这个功能性的 App。但我的想法很简单,这么实用的功能,苹果公司不让上架的话,大不了将其开源,让所有有开发账号的人都能自己编译。于是我忍受着 Xcode 的SourceKit 反复蹦出的报错提示,还有那头孩子不肯乖乖睡觉的吵闹声,经过几个夜晚的努力,硬是挤出了VPN On 的第一版。在把这个版本提交到iTunes Connect 后,我果断地直接开源了整个项目。两周后,它意外地上架了。我发现开源并不会对销量产生太大的影响,上架后头三天带来 427 美元净收入。有一些人告诉我,他们已经成功编译了开源的版本,但仍然去 App Store 买了一份表示支持。
五个月后的现在,LTMorphingLabel 和VPN On 成为 GitHub 上星数较高的两个 Swift 开源项目,被列在各种 Swift 相关的awesome list 中。不过,从 Swift 发布到现在近一年过去,我还是没能看完“The Swift Programming Language”。一是因为各种忙,二是一旦有闲情就又想着做点什么,没能沉下心来看书。所以我觉得应该有一本书,能帮助学习 Swift 语言的人快速入门,用尽可能短的篇幅介绍语言特性及其使用方法。在读过这本《写给大忙人看的 Swift》之后,我发现它就是我想要的书,所以推荐像我一样没太多时间看书又想学 Swift 的朋友阅读这本书。
iOS VPN On作者 汤圣罡
2015年夏
写给大忙人看的Swift 下载 mobi epub pdf txt 电子书 格式