具体描述
本书针对初学者,从变量、类型、函数、闭包等基本概念入手,结合Swift 示例,一步步指导读者使用Swift 开发App。书的最后给出了一个App 开发全流程。
本书适合任何想学习Swift 的人员参考。
作者简介
作者简介:
Boisy G. Pitre
资深苹果开发专家,曾任Siri语音识别技术提供方Nuance公司Mac产品小组的资深软件工程师,参与开发了语音识别软件Dragon Dictate。MacTech杂志“Developer to Developer”月度专栏作家,曾多次在MacTech和CocoaConf等会议上发表技术演讲。现任情绪识别公司Affectiva的移动远景规划师,领导团队致力于将公司的表情分析技术迁移到移动平台。
译者简介:
袁国忠
自由译者;2000年起专事翻译,主译图书,偶译新闻稿、软文;出版译著40余部,其中包括《C++ Prime Plus中文版》《CCNA学习指南》《CCNP ROUTE学习指南》《面向模式的软件架构:模式系统》《Android应用UI设计模式》《风投的选择:谁是下一个十亿美元级公司》等,总计700余万字;专事翻译前,从事过三年化工产品分析和开发,做过两年杂志和图书编辑。
目录信息
第1章 Swift简介 2
1.1 革命性的改良 2
1.2 准备工作 3
1.2.1 专业工具 3
1.2.2 与Swift交互 3
1.3 准备出发 4
1.4 开始探索Swift 6
1.4.1 帮助和退出 6
1.4.2 Hello World 7
1.5 声明的威力 7
1.6 常量 9
1.7 类型 10
1.7.1 检查上限和下限 11
1.7.2 类型转换 11
1.7.3 显式地声明类型 13
1.8 字符串 13
1.8.1 字符串拼接 14
1.8.2 Character类型 14
1.9 数学运算符 15
1.9.1 表达式 15
1.9.2 混用不同的数值类型 16
1.9.3 数值表示 16
1.10 布尔类型 17
1.11 轻松显示 18
1.12 使用类型别名 19
1.13 使用元组将数据编组 20
1.14 可选类型 21
1.15 小结 22
第2章 使用集合 23
2.1 糖果罐 23
2.1.1 数组中所有元素的类型都必须相同 26
2.1.2 增长数组 26
2.1.3 替换和删除值 27
2.1.4 将值插入到指定位置 28
2.1.5 合并数组 29
2.2 字典 30
2.2.1 查找条目 31
2.2.2 添加条目 32
2.2.3 更新条目 33
2.2.4 删除条目 33
2.3 数组的数组 34
2.4 创建空数组和空字典 36
2.4.1 空数组 36
2.4.2 空字典 37
2.5 迭代集合 37
2.5.1 迭代数组 38
2.5.2 迭代字典 39
2.6 小结 40
第3章 流程控制 41
3.1 for 循环 41
3.1.1 计数 41
3.1.2 包含还是不包含结束数字 42
3.1.3 老式for循环 43
3.1.4 简写 44
3.2 游乐场 45
3.3 决策 48
3.3.1 if语句 49
3.3.2 检查多个条件 52
3.3.3 switch语句 53
3.3.4 while循环 57
3.3.5 检查代码 59
3.3.6 提早结束循环 62
3.4 小结 62
第4章 编写函数和闭包 63
4.1 函数 63
4.1.1 使用Swift编写函数 64
4.1.2 执行函数 65
4.1.3 参数并非只能是数字 66
4.1.4 可变参数 67
4.1.5 函数是一级对象 70
4.1.6 从函数返回函数 71
4.1.7 嵌套函数 74
4.1.8 默认参数 76
4.1.9 函数名包含哪些内容 77
4.1.10 清晰程度 78
4.1.11 用不用参数名 79
4.1.12 变量参数 79
4.1.13 inout参数 81
4.2 闭包 82
4.3 小结 84
4.4 类 84
第5章 使用类和结构组织代码 85
5.1 对象无处不在 85
5.2 Swift对象是使用类定义的 86
5.2.1 定义类 86
5.2.2 创建对象 88
5.2.3 开门和关门 88
5.2.4 锁门和开锁 89
5.2.5 查看属性 92
5.2.6 门应是各式各样的 92
5.2.7 修改颜色 94
5.3 继承 95
5.3.1 创建基类 96
5.3.2 创建子类 98
5.3.3 实例化子类 100
5.3.4 便利初始化方法 104
5.4 枚举 106
5.5 结构 109
5.6 值类型和引用类型 110
5.7 小结 112
第6章 使用协议和扩展进行规范化 113
6.1 遵循协议 113
6.1.1 类还是协议 113
6.1.2 协议并非只能定义方法 115
6.1.3 遵循多个协议 117
6.1.4 协议也可继承 118
6.1.5 委托 119
6.2 扩展 122
6.2.1 扩展基本类型 123
6.2.2 在扩展中使用闭包 127
6.3 小结 129
第二部分 使用Swift开发软件
第7章 使用Xcode 132
7.1 Xcode简史 132
7.2 创建第一个Swift项目 133
7.3 Xcode界面 135
7.3.1 与Xcode窗口交互 136
7.3.2 运行应用程序 138
7.4 开发应用程序 139
7.4.1 腾出空间 139
7.4.2 创建界面 141
7.4.3 美化 143
7.4.4 编写代码 145
7.4.5 建立连接 149
7.5 小结 151
第8章 改进应用程序 152
8.1 细节很重要 152
8.1.1 显示金额 152
8.1.2 再谈可选类型 154
8.1.3 可选类型拆封 155
8.1.4 美化 155
8.1.5 另一种格式设置方法 156
8.2 计算复利 160
8.2.1 连接起来 162
8.2.2 测试 165
8.3 调试 165
8.3.1 bug在哪里 165
8.3.2 断点 166
8.3.3 复杂的复利计算 169
8.4 测试的价值 170
8.4.1 单元测试 170
8.4.2 编写测试 171
8.4.3 如果测试未通过 173
8.4.4 始终运行的测试 174
8.5 小结 175
第9章 Swift移动开发 176
9.1 移动设备和台式机 176
9.2 挑战记忆力 176
9.2.1 考虑玩法 177
9.2.2 设计UI 177
9.3 创建项目 178
9.4 创建用户界面 180
9.4.1 创建按钮 181
9.4.2 在模拟器中运行 183
9.4.3 设置约束 184
9.5 MVC 187
9.6 编写游戏代码 187
9.6.1 类 190
9.6.2 枚举 191
9.6.3 视图对象 191
9.6.4 模型对象 191
9.6.5 可重写的方法 192
9.6.6 游戏的方法 193
9.6.7 处理输赢 196
9.7 回到故事板 198
9.8 开玩 200
第10章 成为专家 201
10.1 Swift内存管理 201
10.1.1 值和引用 201
10.1.2 引用计数 202
10.1.3 引用循环 203
10.1.4 演示引用循环 203
10.1.5 编写测试代码 204
10.1.6 断开引用循环 206
10.1.7 闭包中的引用循环 207
10.1.8 感恩 209
10.2 逻辑运算符 209
10.2.1 逻辑非 209
10.2.2 逻辑与 210
10.2.3 逻辑或 210
10.3 泛型 211
10.4 运算符重载 212
10.5 相等和相同 214
10.6 错误处理 216
10.6.1 引发错误 216
10.6.2 捕获错误 217
10.7 Swift脚本编程 219
10.7.1 创建脚本 219
10.7.2 设置权限 221
10.7.3 执行脚本 221
10.7.4 工作原理 222
10.8 获取帮助 223
10.9 小结 225
第11章 高山滑雪 226
11.1 游戏开发技术 226
11.1.1 GameKit 226
11.1.2 SpriteKit 227
11.2 始于构思 227
11.2.1 高山滑雪 227
11.2.2 社交功能 227
11.3 出发 227
11.3.1 怎么玩 228
11.3.2 玩一玩 228
11.4 研究这个项目的组织结构 231
11.4.1 类 231
11.4.2 素材 232
11.4.3 场景 232
11.5 探索源代码 232
11.5.1 场景Home 232
11.5.2 场景Game 235
11.5.3 游戏视图控制器 239
11.5.4 全面了解 241
11.6 独闯江湖 241
11.6.1 研究苹果公司提供的框架 241
11.6.2 加入苹果开发者计划 242
11.6.3 成为社区的一分子 242
11.6.4 活到老学到老 242
11.6.5 一路平安 242
· · · · · · (收起)
读后感
用户评价
我是一个习惯于通过动手实践来学习的“码农”,对于那种只有文字叙述而缺乏实际操作指导的书籍,我的耐心通常撑不过三章。这本书的实操性简直**强悍到让人上瘾**!它不是那种让你对着屏幕敲半天代码却不知道这段代码到底在干嘛的教程。每一个新的知识点,无论是SwiftUI的View生命周期,还是与UIKit的交互机制,作者都会立刻给出一个**完整且可运行的小Demo**。更绝的是,这些Demo往往不是孤立的,而是像搭积木一样,前一个Demo的基础知识会自然而然地延伸到下一个更复杂的应用场景中去。我喜欢它在讲解集合(Collection)操作符时的处理方式,它没有简单地罗列 `map`, `filter`, `reduce`,而是设计了一个小型的数据处理流程,让你在实际处理用户数据或网络响应时,体验这些高阶函数带来的效率提升。我甚至觉得,这本书本身就可以被视为一个**“迷你实战项目集”**。我跟着书上的步骤,把所有例子都亲自敲了一遍,编译通过后,那种成就感是看再多视频教程也无法比拟的。对于追求“学完即用”的开发者来说,这本书的实战价值无可估量。
这本厚厚的手册,光是翻开扉页就能感受到作者的用心良苦,厚实的纸张,清晰的排版,着实让人爱不释手。我以前对编程这块一直是望而却步,总觉得那些代码密密麻麻的像天书一样,碰都不敢碰。但这本书,它就像一个耐心的老朋友,一步一步地把我这个编程门外汉领进了Swift的大门。它没有一上来就丢给我一堆复杂的概念和晦涩的术语,而是从最基础的变量、常量讲起,配上生动形象的比喻,让我很快就抓住了编程的核心思维。特别是它对数据类型的讲解,简直是教科书级别的清晰,什么值类型、引用类型,那些我以前听着就头疼的名词,在作者的笔下变得如此直观易懂。我记得有一次在学习闭包的时候,我反复看了好几遍,还是有点蒙圈,结果作者在下一章的实践案例中,巧妙地把闭包用到了一个实际的UI更新场景里,那一瞬间,所有的疑惑都烟消云散了。这种循序渐进,理论与实践紧密结合的编排方式,真的非常适合我们这些想扎扎实实学点真本事的初学者。书里的每一个示例代码块都经过精心设计,不仅能跑起来,而且代码风格非常规范,为我后续的学习打下了坚实的基础。这本书,绝对是想认真学习Swift的**必读之作**。
我最欣赏这本书的地方在于它对**“Swiftic”风格**的强调和培养。很多教程教你如何写出“能跑起来的代码”,但这本教程教你如何写出“**地道的Swift代码**”。它对协议的推崇、对泛型(Generics)的系统性讲解,都体现了Swift这门语言的核心设计思想。我过去总觉得泛型很玄乎,但在书中,作者通过构建一个通用的网络请求模型,把泛型参数如何确保类型安全、如何实现代码复用的过程讲得淋漓尽致。当我掌握了如何正确地使用泛型约束时,我感觉自己对设计可扩展、可维护的库组件的信心大增。这本书的行文风格非常**谦逊而有条理**,它不会故作高深地卖弄自己的知识,而是始终以读者的角度出发,确保每一个新的工具或语法点都与我们日常的开发任务紧密关联。它就像一个经验丰富的前辈,不仅手把手教你写代码,更重要的是,让你学会了如何像一个**优秀的Swift工程师**那样思考问题。这本书的价值,远超出了单纯的语法手册范畴,它是一本关于如何写出**优雅、高性能Swift代码**的指南。
说实话,市面上的编程书籍汗牛充栋,但大多都有一个通病:要么过于理论化,读完一头雾水;要么案例陈旧,根本跑不起来。我买这本书抱着试试看的心态,没想到它带给我的惊喜是**超乎预期的**。它最大的亮点在于对Swift语言新特性的覆盖和解读非常到位。我之前在研究一些现代iOS开发框架时,经常被一些新的语法特性搞得焦头烂额,比如Optional Chaining的深度应用,或者Swift Concurrency(并发)的一些微妙之处。这本书在讲解这些前沿概念时,不仅清晰地解释了“是什么”,更深入地剖析了“为什么是这样设计”,以及在实际工程中应如何取舍和优化。作者的讲解方式非常成熟老练,他似乎非常了解开发者在学习过程中可能遇到的“陷阱”,总能在关键节点设置“注意”或“陷阱”提示。我特别欣赏它对面向对象编程(OOP)和面向协议编程(POP)的对比分析,视角非常独到,这让我对Swift的设计哲学有了更深层次的理解。读完相关章节后,我回头去看我以前写的一些代码,简直是茅塞顿开,立刻就有种想重构的冲动。这种能直接提升代码质量和架构思维的书,才是真正有价值的。
对于一个已经工作了几年,但基础不算特别扎实的开发者来说,很多时候需要的不是**“从零开始”**的启蒙,而是对现有知识体系的一次**系统性、地毯式的查漏补缺**。这本书恰好完美地满足了这种需求。它没有停留在基础语法层面,而是深入到了Swift语言的“底层逻辑”和性能考量。比如,它对内存管理(ARC)的解释,非常细腻和深入,它不再是简单地告诉你`weak`和`unowned`的区别,而是结合实际的循环引用场景,用图示和代码块清晰地展示了编译器是如何处理引用计数的。这种深挖细节的能力,极大地增强了我对代码健壮性的信心。我发现自己过去在处理异步操作时的一些“凭感觉”的做法,在这本书的指导下,都被替换成了更加严谨和规范的方式。特别是它在讲解错误处理(Error Handling)时,对`do-catch`块的控制流分析,让我对如何编写可预测、易于调试的代码有了全新的认识。这本书的深度和广度,足以让一个有一定经验的开发者重新审视自己对Swift的理解,它提供的是一种**“匠人精神”**的编程哲学。
讲的很通俗
讲的很通俗
讲的很通俗
讲的很通俗
讲的很通俗