具体描述
《iOS编程》荣获Jolt生产力大奖。第5版更新了iOS9、Xcode7、Swift的内容。全书涵盖了开发iOS应用的方方面面。从Swift基础知识到新增加的语言特性;从AppKit库到常见的Cocoa设计模式;从Xcode技巧到Instrumen tst等。如果读者刚接触iOS编程,阅读本书前两章可以快速入门。如果读者已经有iOS编程经验,阅读本书可以拾遗补缺。
作者简介
Christian Keur是Big Nerd Ranch的高级讲师和软件工程师,负责编写Big Nerd Ranch的“iOS新手培训课程”教材。该教材广受好评,是本书的原型。Christian毕业于美国佐治亚理工学院计算机科学系,目前居住在亚特兰大。
.
Aaron Hillegass是Big Nerd Ranch的创始人之一,曾就职于NeXT公司和Apple公司,他拥有近20年的Cocoa、iOS开发与教学经验。Aaron与他人合著了《Mac OS X编程》。
目录信息
1.1 创建Xcode项目 2
1.2 模型-视图-控制器 5
1.3 设计Quiz 6
1.4 Interface Builder 7
1.5 创建界面 8
1.6 创建模型对象 21
1.7 编译完成的应用 23
1.8 应用图标 24
1.9 启动画面 26
第2章 Swift语言 27
2.1 Swift的数据类型 27
2.2 使用标准类型 28
2.3 可选 35
2.4 循环和字符串补全 37
2.5 枚举和Switch 39
2.6 查阅Apple的Swift文档 40
第3章 视图与视图层次结构 41
3.1 视图基础 42
3.2 视图层次结构 42
3.3 创建新项目 44
3.4 视图及Frame 45
3.5 自动布局系统 55
3.6 初级练习:更多自动布局练习 64
第4章 文本输入与委托 65
4.1 文本编辑 65
4.2 实现温度转换 73
4.3 委托 76
4.3 初级练习:禁止输入字母 79
第5章 视图控制器 81
5.1 视图控制器的视图 82
5.2 设置初始视图控制器 82
5.3 UITabBarController 85
5.4 加载以及展示视图 90
5.5 与视图控制器及其视图交互 92
5.6 中级练习:夜间模式 93
5.7 深入学习:高清显示 93
第6章 用代码实现视图 95
6.1 使用代码创建视图 96
6.2 代码实现约束 97
6.3 代码实现事件 104
6.4 初级练习:再添加一个Tab 106
6.5 中级练习:显示用户位置 106
6.6 高级练习:显示地图大头针 106
6.7 深入学习:NSAutoresizingMaskLayoutConstraint 106
第7章 本地化 109
7.1 国际化 110
7.2 本地化 120
7.3 初级练习:另外一种本地化 126
7.4 深入学习:NSBundle在国际化中扮演的角色 126
7.5 深入学习:导入以及导出XLIFF 128
第8章 控制动画 129
8.1 基础动画 130
8.2 另一个标签 132
8.3 动画完成 135
8.4 对约束作动画 135
8.5 时间方法 139
8.6 初级练习:spring动画 141
8.7 中级练习:Layout Guides 141
第9章 UITableView与UITableViewController 143
9.1 编写Homepwner应用 144
9.2 UITableViewController 145
9.3 创建Item类 147
9.4 UITableView数据源 149
9.5 UITableViewCells 153
9.6 内容缩进 158
9.7 初级练习:多个分组 159
9.8 中级练习:固定的行 160
9.9 高级练习:自定义UITableView 160
第10章 编辑UITableView 161
10.1 编辑模式 161
10.2 添加行 166
10.3 删除行 168
10.4 移动行 169
10.5 显示提示窗口 170
10.6 设计模式 173
10.7 初级练习:修改删除按钮的标题 174
10.8 中级练习:禁止调整顺序 174
10.9 高级练习:真正地禁止调整顺序 174
第11章 创建UITableViewCell子类 175
11.1 创建ItemCell 176
11.2 添加并关联ItemCell的属性 178
11.3 使用ItemCell 179
11.4 动态计算高度 180
11.5 动态类型 181
11.6 初级练习:UITableViewCell的颜色 184
第12章 UIStackView 185
12.1 使用UIStackView 186
12.2 Segues 194
12.3 绑定内容 195
12.4 传递数据 200
12.5 初级练习:更多的UIStackView 201
第13章 UINavigationController 203
13.1 UINavigationController 204
13.2 使用UINavigationController导航 209
13.3 视图的出现和消失 210
13.4 隐藏键盘 211
13.5 UINavigationBar 215
13.6 初级练习:显示数字键盘 220
13.7 中级练习:自定义UITextField 220
13.8 高级练习:添加更多UIViewController 220
第14章 相机 221
14.1 通过UIImageView对象显示图片 222
14.2 通过UIImagePickerController拍摄照片 226
14.3 创建ImageStore 231
14.4 让UIViewController可以访问ImageStore 232
14.5 创建并使用键 233
14.6 使用ImageStore 235
14.7 初级练习:编辑图片 236
14.8 中级练习:删除图片 237
14.9 高级练习:Camera Overlay 237
14.10 深入学习:导航实现文件 237
第15章 保存、读取与应用状态 241
15.1 固化 242
15.2 应用沙盒 245
15.3 NSKeyedArchiver与NSKeyedUnarchiver 248
15.4 应用状态与状态切换 251
15.5 通过NSData将数据写入文件 254
15.6 错误处理 257
15.7 初级练习:PNG 259
15.8 深入学习:应用状态切换 259
15.9 深入学习:文件系统读/写 261
15.10 深入学习:应用程序包 263
第16章 Size Classes 265
16.1 定制Size Classes 266
16.2 初级练习:垂直排列UITextField和UILabel 272
第17章 触摸事件和UIResponder 273
17.1 触摸事件 274
17.2 创建TouchTracker应用 275
17.3 创建Line结构体 276
17.4 创建DrawView 278
17.5 使用DrawView画图 279
17.6 处理触摸事件并创建线条对象 280
17.7 @IBInspectable 285
17.8 中级练习:颜色 287
17.9 高级练习:圆圈 287
17.10 深入学习:响应对象链 287
17.11 深入学习:UIControl 289
第18章 UIGestureRecognizer与UIMenuController 291
18.1 UIGestureRecognizer子类 292
18.2 使用UITapGestureRecognizer检测点击 292
18.3 多个UIGestureRecognizer 294
18.4 UIMenuController 297
18.5 更多UIGestureRecognizer 299
18.6 深入学习UIGestureRecognizer 304
18.7 中级练习:神奇的线条 305
18.8 高级练习:速度和大小 305
18.9 铂金挑战:颜色 305
18.10 深入学习:UIMenuController与UIResponderStandardEditActions 306
第19章 网络服务 307
19.1 开始Photorama应用 308
19.2 创建URL 309
19.3 发送请求 314
19.4 Photo模型 317
19.5 JSON数据 318
19.6 下载并显示图片数据 326
19.7 主线程 329
19.8 初级练习:打印返回信息 331
19.9 深入学习:HTTP 331
第20章 UICollectionView 333
20.1 显示网格 334
20.2 UICollection数据源 336
20.3 自定义布局 339
20.4 创建自定义的UICollectionViewCell 341
20.5 下载图片数据 345
20.6 查看照片 349
20.7 中级练习:改变Item的尺寸 352
20.8 高级练习:自定义布局 352
第21章 Core Data 353
21.1 对象图 353
21.2 实体 354
21.3 创建Core Data Stack 358
21.4 更新数据 361
21.5 更新数据源 364
21.6 在硬盘上保存图片 367
21.7 初级练习:照片查看次数 368
第22章 Core Data关系 369
22.1 关系 370
22.2 在界面中添加标签 372
22.3 父子NSManagedObjectContext 382
22.4 中级练习:收藏 384
第23章 后记 385
23.1 接下来做什么 385
23.2 关注我们 386
索引 387
· · · · · · (收起)
读后感
我读了好几遍,收获很大,向刚学iOS 的童鞋推荐这本书!翻译的也很流畅,果断推荐这本书。不错,哈哈 五星
用户评价
我是一名长期从事后端开发的工程师,最近被要求转型至全栈,iOS自然成了我必须攻克的山头。坦率地说,我对前端和UI/UX的理解一度非常薄弱,总是习惯于“先完成功能再说”。然而,这本书的写作风格有一种魔力,它能将那些原本枯燥的“界面设计原则”转化为清晰可执行的编程指导。例如,在介绍可访问性(Accessibility)特性时,作者没有简单地告诉我们设置`accessibilityLabel`,而是从用户心智模型出发,解释了屏幕阅读器用户如何感知界面元素,进而指导我们如何构建真正包容性的App。这极大地提升了我对“好代码”的定义——它不仅要能跑,更要对所有用户友好。此外,书中对网络层的设计有独到的见解,它没有推荐任何特定的第三方库,而是指导读者如何基于`URLSession`构建一个可扩展、支持请求合并、具备智能缓存策略的现代化网络栈,这套知识体系让我能够完全掌控数据流,而不是被封装库牵着鼻子走。这本书成功地弥合了“功能实现者”和“用户体验缔造者”之间的鸿沟。
说实话,在拿到这本书之前,我对“移动应用生命周期管理”的理解还停留在教科书式的被动接受阶段。然而,这本书用一种近乎“侦探小说”的笔法,将App从启动到后台挂起,再到崩溃恢复的每一个细微状态变化都进行了细致入微的解剖。它不像其他书籍那样,只是罗列`application:didFinishLaunchingWithOptions:`之类的委托方法,而是深入探究了系统资源调度器是如何管理内存、CPU和网络连接的。当我按照书中指导,利用调试工具去追踪一个App在不同内存压力下的行为时,我才真正理解了为什么有些App会无缘无故地被系统终止。作者用大量篇幅讲解了如何利用Instruments工具链,特别是“Allocations”和“Time Profiler”,去定位那些看似无害却暗藏杀机的内存泄漏和性能瓶颈。更让我惊喜的是,书中还涉及到了一些macOS和iOS之间API调用的底层差异,这对于希望构建跨平台生态的开发者来说,提供了宝贵的横向知识视野。阅读过程中,我感觉自己不仅仅是在学习编码,更像是在学习如何与操作系统“对话”,如何用系统偏好的方式去构建一个健壮、高效且能“活得长久”的移动应用。
这本书的魅力在于它的“不妥协”和“深度”。市面上很多教程在涉及到用户界面布局时,往往只停留在Auto Layout的基本约束设置上,美其名曰“提高开发效率”。但《iOS编程(第5版)》却花了相当大的篇幅去讲解为什么在某些复杂视图层级中,纯粹依赖Auto Layout会导致性能下降,并提出了使用`CAShapeLayer`配合`UIViewPropertyAnimator`来实现高性能、流畅的自定义动画的进阶技巧。这套内容,读起来简直是一种享受,因为它满足了一个资深开发者对“完美实现”的苛求。我特别留意了书中关于Core Data与Realm的对比分析部分,它不是简单地比较CRUD操作的速度,而是从数据持久化到迁移、版本控制以及并发访问控制的哲学层面进行了深刻的探讨。书中对Realm的异步写入机制的解析尤其到位,让我彻底明白了为什么它在处理大量数据更新时能保持UI的流畅性。可以说,这本书的内容深度已经远远超出了普通应用开发的需求,它更像是一本面向架构师和性能调优专家的参考手册,每读一遍都会有新的领悟,绝对值得反复研读。
这本《iOS编程(第5版)》实在是让人爱不释手,简直是iOS开发领域的“武功秘籍”!我从一个对Swift一窍不通的纯小白,到能够独立构建出复杂App的原生开发者,这本书功不可没。它不仅仅是知识点的堆砌,更是那种由浅入深、层层递进的逻辑结构,让人在学习过程中始终保持着“原来如此”的顿悟感。书中的代码示例极为精妙,每一个Demo都不是为了演示某个孤立的功能,而是紧密围绕着实际项目中的痛点和最佳实践来设计的。比如,在讲解并发编程时,作者没有仅仅停留在GCD的API调用层面,而是深入剖析了OperationQueue和XPC服务的底层原理,甚至还涉及到了Swift Concurrency中`async/await`的优雅过渡方案,让读者能真正理解多线程环境下的数据竞争和死锁问题,而不是仅仅停留在“会用”的层面。尤其是对UIKit与SwiftUI混合开发的探讨,这本书的见解非常超前和务实,没有盲目推崇新框架而忽略了庞大的现有代码库,而是提供了一套清晰的迁移和共存策略,这点对于正在维护遗留项目的资深工程师来说,简直是如获至宝的宝典。我个人最欣赏的是作者对于设计模式在iOS应用中的灵活运用,书中通过真实的案例展示了MVVM、VIPER等架构模式如何在不同的业务场景下取舍和落地,让“架构”这个抽象的概念变得触手可及。
这本书的排版和插图也值得称赞,它们绝非华而不实的点缀,而是教学逻辑的有机组成部分。许多复杂的内存管理和图层渲染流程,如果仅凭文字描述,极易让人产生混淆,但书中那些精心绘制的流程图和内存快照图,如同清晰的路线图,瞬间就理清了思路。我尤其欣赏作者对于Swift语言特性的把握,它紧跟最新的Swift版本迭代,但又不过分沉迷于语法糖。例如,书中对Result Builder和Property Wrapper的讲解,不是孤立的语法介绍,而是直接将其应用到构建声明式UI和状态管理中,使得代码的表达力得到了质的飞跃。读完关于Combine框架的章节后,我终于明白为什么官方推荐使用响应式编程来处理异步事件流,它将回调地狱转化成了一条清晰的数据管道。这种与时俱进且注重实战效果的教学方式,让我感觉这本书的生命力非常强,它不是一本静态的参考书,而是一份持续进化的开发指南,非常适合那些希望站在行业前沿的进取型开发者。
为中华崛起而读书,致敬知识。
基于最新swift,对于第四版有意见的童鞋可以一读了
为中华崛起而读书,致敬知识。
为中华崛起而读书,致敬知识。
为中华崛起而读书,致敬知识。