具体描述
过阅读本书,你将能够:
了解OS X和iOS应用的生命周期
使用故事板设计自适应界面
探索图形系统,包括内置的2D和3D游戏框架
用AVFoundation显示视频和音频
用文件系统在本地存储数据,或者用iCloud在网络上存储数据
用表格视图和集合视图显示数据列表或数据集合
开发可供用户创建、编辑和处理文档的应用
使用MapKit、Core Location和Core Motion与现实世界交互
作者简介
作者简介:
Jonathon Manning
是澳大利亚独立游戏开发工作室Secret Lab的联合创始人,移动应用工程师、游戏设计师、程序员和计算学研究人员,从事过各种项目,曾为孩子们开发过iPad游戏,也开发过即时通信客户端。Twitter账号为@desplesda。
Paris Buttfield-Addison
也是Secret Lab的联合创始人,移动应用工程师、游戏设计师和计算学研究人员,致力于使技术变得简单又有趣。Paris拥有计算学博士学位。Twitter账号为@parisba。
Tim Nugent
是一位移动应用开发人员、游戏设计师、博士生、作家。大部分时间都用来设计和开发仅供自己娱乐的小应用和游戏。Twitter账号为@The_McJones。
目录信息
第1章 Cocoa开发工具 1
1.1 Mac和iOS开发者计划 1
1.1.1 注册开发者计划 2
1.1.2 下载Xcode 3
1.2 用Xcode创建自己的第一个项目 4
1.3 开发一个简单的Swift应用程序 11
1.3.1 设计界面 11
1.3.2 连接代码 13
1.4 使用iOS模拟器 14
1.5 用TestFlight测试iOS App 16
第2章 用Swift设计程序 17
2.1 Swift程序设计语言 17
2.2 playground 19
2.3 变量和常量 20
2.4 类型 21
2.4.1 元组 23
2.4.2 数组 23
2.4.3 字典 25
2.5 控制流 25
2.6 函数与闭包 29
2.6.1 将函数用作变量 32
2.6.2 闭包 34
2.7 对象 35
2.7.1 继承 36
2.7.2 初始化与反初始化 37
2.7.3 属性 38
2.7.4 协议 40
2.7.5 扩展 41
2.7.6 访问控制 43
2.7.7 运算符 44
2.7.8 泛型 45
2.8 与Objective-C的互操作 46
2.9 在同一项目中使用Objective-C和Swift 46
2.9.1 在Objective-C中使用Swift对象 46
2.9.2 在Swift中使用Objective-C 47
2.10 模块 48
2.11 内存管理 48
2.12 字符串 49
2.12.1 比较字符串 50
2.12.2 查找字符串 50
2.13 数据 50
2.13.1 从文件和URL加载数据 51
2.13.2 序列化与反序列化 51
2.14 Cocoa中的设计模式 52
2.14.1 模型- 视图- 控制器 52
2.14.2 委托 53
第3章 OS X和iOS上的应用程序 56
3.1 什么是应用程序 56
3.1.1 应用程序、框架、实用工具及其他 57
3.1.2 App的构成 58
3.1.3 用NSBundle在应用程序中查找资源 60
3.2 应用程序生命周期 61
3.2.1 OS X应用程序 61
3.2.2 iOS应用程序 62
3.3 应用程序沙盒 67
3.4 用NSNotification发送通知 70
第4章 图形用户界面 72
4.1 OS X和iOS中的界面 72
4.2 MVC和应用程序设计 73
4.3 nib文件和故事板 73
4.3.1 nib文件的结构 74
4.3.2 故事板 77
4.3.3 输出口和操作 77
4.3.4 如何加载nib文件和故事板 78
4.4 构建界面 79
4.5 构建具有nib和约束的App 81
4.6 iOS上的界面 84
4.7 UI Dynamics 87
4.7.1 UI和重力 87
4.7.2 吸附UI 88
4.8 Core Animation 89
4.8.1 层 90
4.8.2 动画 91
第5章 闭包和操作队列 94
5.1 Cocoa中的闭包 95
5.2 操作队列中的并发 96
5.3 操作队列和NSOperation 96
5.4 在操作队列中执行工作 97
5.5 融会贯通 98
第6章 在视图上绘制图形 103
6.1 如何绘制 103
6.2 像素网格 105
6.2.1 Retina显示屏 106
6.2.2 像素与屏幕点 107
6.3 在视图中绘制 107
6.3.1 框架矩形 107
6.3.2 边界矩形 108
6.4 创建自定义视图 109
6.4.1 用纯色填充 110
6.4.2 处理路径 111
6.4.3 创建自定义路径 112
6.4.4 多条子路径 114
6.4.5 阴影 115
6.4.6 渐变 119
6.4.7 变换 121
第7章 SpriteKit 123
7.1 SpriteKit的体系结构 123
7.2 制作使用SpriteKit的App 124
7.3 使用SpriteKit场景 125
7.4 SpriteKit节点 127
7.5 将精灵放在场景中 128
7.6 对触碰作出响应 129
7.7 使用纹理 130
7.8 纹理贴图集 131
7.9 使用文本 131
7.10 用操作实现内容的动画 133
7.11 使用形状节点 134
7.12 使用图像特效节点 135
7.13 向SpirteKit对象增加物理属性 137
7.14 向SpriteKit对象添加接合 138
7.15 SpriteKit场景照明 138
7.16 约束 139
7.17 在SpriteKit中使用阴影 140
7.18 使用SpriteKit编辑器 142
第8章 SceneKit 143
8.1 SceneKit结构 144
8.2 使用SceneKit 144
8.3 添加SceneKit视图 145
8.4 添加场景 146
8.5 添加照相机 146
8.6 添加3D对象 147
8.7 添加光源 149
8.8 为场景中的内容实现动画 150
8.9 创建文本几何体 151
8.10 使用材料 153
8.11 命中检测 157
8.12 约束 158
8.13 从COLLADA文件中加载数据 160
8.14 向场景中添加物理仿真 162
第9章 音频与视频 165
9.1 AV Foundation 165
9.2 用AVPlayer播放视频 166
9.2.1 AVPlayerLayer 167
9.2.2 融会贯通 167
9.2.3 AVKit 170
9.2.4 iOS上的AVKit 172
9.2.5 用AVAudioPlayer播放声音 174
9.3 语音合成 175
9.4 使用照片库 176
9.4.1 从相机采集照片和视频 176
9.4.2 开发照片应用程序 178
9.4.3 照片库 181
第10章 iCloud和数据存储 182
10.1 偏好设置 182
10.1.1 注册默认偏好设置 183
10.1.2 访问偏好设置 184
10.1.3 设定偏好设置 184
10.2 使用文件系统 184
10.2.1 使用NSFileManager 186
10.2.2 文件存储位置 189
10.3 使用沙盒 189
10.3.1 启用沙盒 190
10.3.2 打开和保存面板 190
10.3.3 安全范围内的书签 191
10.4 iCould 192
10.5 iCloud存储什么 193
10.6 为iCloud进行设置 194
10.7 测试iCloud是否正常工作 194
10.8 存储设置 195
10.8.1 处理外部修改 196
10.8.2 iOS上的相应内容 197
10.9 iCloud存储 199
10.9.1 OS X上的iCloud存储 200
10.9.2 iOS上的iCloud存储 204
10.10 文档选取器 206
10.11 iCloud的最佳使用 210
第11章 Cocoa绑定 211
11.1 将视图绑定到模型 211
11.2 一个简单的绑定App 212
11.3 绑定到控制器 214
11.4 数组和对象控制器 216
11.5 一个更复杂的绑定App 216
第12章 表格视图和集合视图 223
12.1 数据源和委托 223
12.2 表格视图 224
12.2.1 iOS上的UITableView 224
12.2.2 OS X上的NSTableView 231
12.3 集合视图 236
第13章 基于文档的应用程序 240
13.1 NSDocument和UIDocument类 241
13.2 MVC 中的文档对象 241
13.2.1 文档的类型 241
13.2.2 文档的角色 242
13.3 OS X上基于文档的应用程序 243
13.3.1 自动保存与版本 243
13.3.2 用NSDocument表示文档 243
13.3.3 保存简单数据 244
13.3.4 保存更复杂的数据 246
13.4 iOS上基于文档的应用程序 250
第14章 联网 257
14.1 连接 257
14.1.1 NSURL 258
14.1.2 NSURLRequest 259
14.1.3 NSURLSession 259
14.1.4 NSURLResponse和NSHTTPURLResponse 260
14.2 开发联网应用程序 261
14.3 Bonjour服务的发现 262
14.4 Multipeer Connectivity 264
第15章 与现实世界互动 269
15.1 使用位置 269
15.1.1 位置硬件 270
15.1.2 Core Location框架 271
15.1.3 使用Core Location 272
15.2 地理编码 275
15.3 区域监测和iBeacon 278
15.4 位置与隐私 281
15.5 地图 281
15.5.1 使用地图 281
15.5.2 标记地图 282
15.5.3 地图与覆盖物 282
15.6 设备运动 284
15.6.1 使用Core Motion 285
15.6.2 使用内置高度计 288
15.6.3 使用计步器 289
15.7 打印文档 290
15.7.1 在OS X 上打印 291
15.7.2 在iOS 上打印 291
15.8 Game Controller 293
15.9 App Nap 295
15.10 用Touch ID验证 296
15.11 Handoff 300
第16章 EventKit 305
16.1 理解事件 305
16.2 访问事件存储库 306
16.3 访问日历 307
16.4 访问事件 307
16.5 处理事件 308
16.6 开发一个事件应用程序 310
16.7 用户隐私 314
第17章 Instruments和调试器 315
17.1 开始使用Instruments 316
17.1.1 Instruments 界面 318
17.1.2 观察数据 318
17.1.3 从Library中添加Instruments 319
17.2 用Instruments解决问题 320
17.3 循环保留和漏洞 324
17.4 使用调试器 326
17.4.1 设置断点 326
17.4.2 查看内存内容 328
17.4.3 使用调试器控制台 329
17.5 视图调试 329
17.6 测试框架 331
17.6.1 编写测试 332
17.6.2 编写异步测试 333
17.6.3 性能测试块 334
17.7 调试仪表 334
17.8 性能优化 334
第18章 共享与通知 336
18.1 共享 336
18.2 在iOS上共享 339
18.3 在OS X上共享 341
18.4 通知 342
18.4.1 注册通知设置 342
18.4.2 推送通知 347
18.4.3 通知到达时会发生什么 347
18.5 发送推送通知 348
18.6 设置接收推送通知 349
18.7 接收推送通知 350
18.8 本地通知 352
第19章 非标准App 354
19.1 命令行工具 354
19.2 偏好设置窗格 355
19.2.1 偏好设置窗格如何工作 356
19.2.2 偏好设置域 356
19.2.3 生成示例偏好设置窗格 357
19.3 状态栏项目 359
19.4 多窗口iOS App 361
第20章 处理文本 364
20.1 国际化与本地化 364
20.1.1 字符串文件 364
20.1.2 创建一个示例本地化应用程序 365
20.2 用NSFormatter设定数据格式 372
20.3 设定数字、长度、质量、能量和数据的格式 374
20.3.1 NSNumberFormatter 374
20.3.2 NSEnergyFormatter、NSMassFormatter 和NSLengthFormatter 375
20.3.3 NSByteCountFormatter 376
20.4 用NSDataDetector检测数据 377
20.5 TextKit 379
作者介绍 382
封面介绍 382
· · · · · · (收起)
读后感
如果你之前没有学过cocoa,没学过obj-c,直接想从swift开始学cocoa,那这本书是不二选择。但是这里头写的简直只能给人随便翻一翻看,作为初学入门教材还可以,细看完全不能当成工具书来翻阅。 首先是错误太多了,所有所有的函数第一参数全部被当成了函数名来翻译,实在搞不懂...
如果你之前没有学过cocoa,没学过obj-c,直接想从swift开始学cocoa,那这本书是不二选择。但是这里头写的简直只能给人随便翻一翻看,作为初学入门教材还可以,细看完全不能当成工具书来翻阅。 首先是错误太多了,所有所有的函数第一参数全部被当成了函数名来翻译,实在搞不懂...
如果你之前没有学过cocoa,没学过obj-c,直接想从swift开始学cocoa,那这本书是不二选择。但是这里头写的简直只能给人随便翻一翻看,作为初学入门教材还可以,细看完全不能当成工具书来翻阅。 首先是错误太多了,所有所有的函数第一参数全部被当成了函数名来翻译,实在搞不懂...
如果你之前没有学过cocoa,没学过obj-c,直接想从swift开始学cocoa,那这本书是不二选择。但是这里头写的简直只能给人随便翻一翻看,作为初学入门教材还可以,细看完全不能当成工具书来翻阅。 首先是错误太多了,所有所有的函数第一参数全部被当成了函数名来翻译,实在搞不懂...
如果你之前没有学过cocoa,没学过obj-c,直接想从swift开始学cocoa,那这本书是不二选择。但是这里头写的简直只能给人随便翻一翻看,作为初学入门教材还可以,细看完全不能当成工具书来翻阅。 首先是错误太多了,所有所有的函数第一参数全部被当成了函数名来翻译,实在搞不懂...
用户评价
与其他同类书籍相比,这本书的广度与深度达到了一个令人惊叹的平衡点。它没有仅仅停留在Swift语言本身或者某个单一框架的表面操作,而是真正地将Cocoa生态系统视为一个整体来解构。例如,在讨论如何高效地与`AVFoundation`进行媒体处理时,它不仅展示了如何使用异步队列,更深入地探讨了`DispatchSource`与底层I/O操作的关联,甚至还触及了如何在macOS环境中利用Metal Shaders来辅助视频渲染的边缘技术。这种对生态系统各个层面相互作用的洞察力,是判断一本技术书是否“够格”的关键。我深感这本书更像是一份关于“如何成为一个优秀的苹果平台架构师”的路线图,而非简单的“如何写代码”的指南。它教会了我如何设计出经得起时间考验、易于维护和扩展的应用程序结构,这对于我未来的职业发展而言,其价值远超书本本身的定价。它真正做到了传道、授业、解惑,是一本值得反复翻阅的案头宝典。
这本书的章节安排简直是教科书级别的典范,清晰、有逻辑,而且难度递进得非常自然。我特别欣赏它在介绍新概念时所采用的“问题-方案-代码实现-最佳实践”的结构。例如,在讲解`UIKit`的生命周期管理时,它没有简单地罗列`viewDidLoad`、`viewWillAppear`这些方法,而是先构建了一个复杂的场景需求——比如一个需要频繁刷新数据的复杂列表视图,然后循序渐进地展示如何利用生命周期事件来优化性能、避免资源浪费。这种实战导向的教学方法,让理论知识立刻获得了实际应用的土壤。当我跟随书中的步骤搭建一个自定义手势识别器时,我发现作者对底层事件传递链的描述极其精妙,甚至提到了在某些特定多指交互场景下,系统默认行为可能带来的陷阱,并提供了优雅的替代方案。这种对细节的执着和对潜在风险的预警,体现了作者深厚的实战经验,绝非纸上谈兵。阅读过程中,我发现自己对于过去项目中一些含糊不清的处理方式,突然间茅塞顿开,这绝对是技术成长的一个重要里程碑。
装帧设计和排版质量也值得一提,毕竟长时间阅读技术书籍,眼睛的舒适度至关重要。这本书的字体选择非常合适,行距和字距都拿捏得恰到好处,即便是大段的代码块,其高亮和缩进也清晰可辨,阅读起来毫无压迫感。更值得称赞的是,书中大量的图表和流程示意图,它们不再是那些简陋的方框加箭头,而是精心绘制的架构图,用色彩和层次清晰地划分了不同框架组件之间的关系。比如,关于Core Data与SQLite数据存储层的交互描述,作者用一张多层透视的图谱清晰展示了对象图缓存与持久化存储之间的映射关系,这比单纯的文字描述效率高出百倍。我通常在咖啡馆阅读技术书籍,光线变化较大,而这本书的纸张选择似乎具有良好的抗反光性,即使在强光下观看,内容依然清晰锐利。这种对读者阅读体验的重视,无疑提升了整体的学习效率和愉悦感,让人愿意沉浸其中,而不是仅仅将其视为一本需要“攻克”的教材。
这本书的语言风格非常独特,它既有资深工程师那种沉稳、严谨的论述基调,又时不时地闪现出一种幽默的、鼓舞人心的旁白。这种平衡掌握得非常好,避免了技术文档常见的枯燥感。在讲解那些公认的“硬骨头”知识点,比如`Core Animation`的渲染路径优化时,作者会用一些非常贴近生活的比喻来解释复杂的概念,比如将图层合并比作“画师在画布上减少笔触次数”,瞬间就让抽象的性能提升具象化了。此外,书中穿插了一些“作者的话”或者“经验分享”的小栏目,这些内容往往是关于如何在真实世界中平衡技术理想与项目进度的思考。它们为纯粹的技术探讨增添了一层人文关怀,让人感觉作者不是一个冷冰冰的机器,而是一个愿意分享、引导后辈成长的导师。正是这种亦师亦友的语调,让我在遇到挫折时,也能从字里行间汲取到继续前行的动力。
这本书的封面设计着实抓人眼球,那种深邃的蓝色调配上醒目的银色字体,立刻让人联想到技术和未来的交织感。拿到手里,份量感也恰到好处,不是那种轻飘飘的速成读物,而是实实在在的技术专著。迫不及待地翻开扉页,首先映入眼帘的是作者对编程哲学的独到见解,这部分内容深入浅出,不像有些技术书那样上来就堆砌代码和术语,而是花了不少篇幅来阐述“为什么”我们要用这种方式思考问题。例如,作者对面向对象编程在现代iOS/macOS开发中的角色进行了非常透彻的剖析,尤其是关于协议导向编程(POP)的讲解,简直是拨云见日。我记得有一段描述Swift语言的特性如何完美适配Cocoa底层架构的文字,逻辑性极强,看得人不由得拍案叫绝。书中对内存管理、并发处理这些核心难点,都给出了非常详实且富有洞察力的解析。这些初期的铺垫,为后续深入技术细节打下了坚实的基础,让人感觉这不是一本简单的工具手册,而是一次系统性的知识重构之旅。整体而言,前期的文字功力与技术视野的展现,已经让我对后续内容的期待值拉满了。
没时间细看,但粗略翻过感觉还是讲得很清楚。
没时间细看,但粗略翻过感觉还是讲得很清楚。
走马观花 几乎毫无用处 啥也没学到的看完了 就这样还看了一年。。太拖延了。。
走马观花 几乎毫无用处 啥也没学到的看完了 就这样还看了一年。。太拖延了。。
持续学习中