新書推薦:
《
关键改变:如何实现自我蜕变
》
售價:HK$
77.3
《
超加工人群:为什么有些食物让人一吃就停不下来
》
售價:HK$
99.7
《
历史的教训(浓缩《文明的故事》精华,总结历史教训的独特见解)
》
售價:HK$
62.7
《
不在场证明谜案(超绝CP陷入冤案!日本文坛超新星推理作家——辻堂梦代表作首次引进!)
》
售價:HK$
58.2
《
明式家具三十年经眼录
》
售價:HK$
524.2
《
敦煌写本文献学(增订本)
》
售價:HK$
221.8
《
耕读史
》
售價:HK$
109.8
《
地理计算与R语言 [英] 罗宾·洛夫莱斯 [德]雅纳·蒙乔 [波兰] 雅库布·诺沃萨德
》
售價:HK$
121.0
|
編輯推薦: |
Swift 非常适于系统编程,同时它也能被用于书写高层级的代码。
如果你已想深入探索这门语言的奥秘,这是*能找到的一本书。
全球知名 iOS 教学网站 objc,其精品图书更是惠及无数开发者。
高层级抽象如泛型|协议,低层级如封装C代码、字符串内部实现。
|
內容簡介: |
在本书中,我们涵盖了Swift程序设计的一些进阶话题。如果你已经通读Apple的Swift编程指南,并且想要深入探索关于这门语言的更多内容,那么这本书正适合你!Swift非常适合用来进行系统编程,而同时它也能被用于书写高层级的代码。我们在书中既会研究像是泛型、协议这样的高层级抽象的内容,也会涉足像是封装C代码以及字符串内部实现这样的低层级话题。
|
關於作者: |
王巍 onevcat ,《Swifter(第2版):100个Swift 2 开发必备Tip》作者,来自中国的一线 iOS 开发者,毕业于清华大学。在校期间就开始进行 iOS 开发,拥有丰富的 Cocoa 和 Objective-C 开发经验,另外他也活跃于使用 C# 的 Unity3D 游戏开发界。曾经开发了《小熊推金币》,《Pomo Do》等一系列优秀的 iOS 游戏和应用。在业余时间,王巍会在 OneV''s Den 撰写博客,分享他在开发中的一些心得和体会。另外,王巍还是翻译项目 objc 中国的组织者和管理者,为中国的 Objective-C 社区的发展做出了贡献。同时,他也很喜欢为开源社区贡献代码,是著名的 Xcode 插件 VVDocumenter 的作者。现在王巍旅居日本,并就职于即时通讯软件公司 Line,从事 iOS 开发工作,致力于为全世界带来更好体验和功能的应用。
|
目錄:
|
第1章介绍1
1.1 本书所面向的读者2
1.2 主题3
1.3 术语6
1.4 Swift风格指南9
第2章内建集合类型11
2.1 数组11
数组和可变性11
数组和可选值13
数组变形14
数组类型25
2.2 字典27
可变性28
有用的字典扩展28
Hashable 要求30
2.3 Set 31
集合代数32
索引集合和字符集合33
在闭包中使用集合34
2.4 Range 34
第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
通用的PrefixIterator 74
3.5 专门的集合类型75
前向索引76
双向索引77
随机存取索引78
MutableCollection 79
RangeReplaceableCollection 80
3.6 总结82
第4章可选值84
4.1 哨岗值84
4.2 通过枚举解决魔法数的问题86
4.3 可选值概览88
if let 88
while let 89
双重可选值92
if var and while var 94
解包后可选值的作用域95
可选链97
nil 合并运算符99
可选值map 101
可选值flatMap 103
使用flatMap 过滤nil 104
可选值判等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.4 inout 参数和可变方法167
嵌套函数和inout 169
& 不意味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.4 ExpressibleByStringLiteral 192
7.5 String 的内部结构193
Character 的内部组织结构199
7.6 编码单元表示方式199
7.7 CustomStringConvertible 和
CustomDebugStringConvertible 201
7.8 文本输出流203
7.9 字符串性能207
7.10 展望211
第8章错误处理212
8.1 Result 类型213
8.2 抛出和捕获214
8.3 带有类型的错误216
8.4 将错误桥接到Objective-C 217
8.5 错误和函数参数218
Rethrows 220
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 实践:封装CommonMark 272
封装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 的创始人Chris Eidhof1,著名科技编辑和博主Ole Begemann2以及一
直关注Swift的博客Airspeed Velocity3 的幕后人员一同联合编写。原版书籍一经公布,就引
起了国外Swift社区的极大关注,可以说本书是国外高级Swift开发者几乎人手一本的必读物。书中深入浅出地剖析了Swift里深层次的实现细节以及设计思路。对于包括诸如内建集合类型的底层实现、泛型和协议的设计、Swift字符串的原理和使用逻辑、值类型和引用类型的适用场景和特点等话题,书中都进行了详细的分析。
本书通过这些细致和系统的解释,为我们揭示了Swift的设计哲学,让我们在学习Swift的过程中,从身在此山变为高屋建瓴。虽然在技术精进的道路上没有捷径,但若将前人的经验和总结的精华作为基础,确实能让我们事半功倍。
技术书籍总会面临版本变动和更新的问题。本书的英文原版是在2015 年Swift2 时发布的,其实该书的翻译工作也早在2015 年年中就完成了。但是在Swift3 中,Apple 对这门语言进行了大幅的重塑和调正,本着对读者负责的态度,我们并没有急于推出本书的过时版本,而是在等待Swift趋于稳定后,直接以对应最新版本的形式进行发布。在能预见的未来中,Swift 4 及后续版本并不会发生像前序版本那样的大规模改动,因此我们认为学习和进阶Swift的时机已经成熟。《Swift进阶》一书在探讨问题时也对版本之间的差异进行了说明,让读者可以了解到技术变革的来龙去脉,并为未来的知识更新提前做好准备。
我们必须承认,在国内当前Swift的接受度和使用范围,已经与国外产生了一些差距。由此导致了Swift程序开发的平均水平也稍有落后。但我们相信这只是暂时的,随着Swift社区的日益强大,国内使用Swift的机会和应用场合,都会发生爆发式的增长。让更多的中国开发者有机会接触和了解Swift开发更深层次的内容,正是本书目的所在。
王巍
|
|