您好,欢迎来到聚文网。 登录 免费注册
精通iOS框架

精通iOS框架

畅销书作者Kyle Richter全新作品,每一章包含一个完整的Objective-C示例程序,源代码免费下载
  • 字数: 742千字
  • 装帧: 平装
  • 出版社: 清华大学出版社
  • 作者: (美)里克特(Kyle Richter),(美)姬莉(Joe Keeley) 著;冯宗翰,江铭,朱倩 译
  • 出版日期: 2016-05-01
  • 商品条码: 9787302433811
  • 版次: 1
  • 开本: 16开
  • 页数: 441
  • 出版年份: 2016
定价:¥79.8 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
编辑推荐
畅销书作者Kyle Richter全新作品
  每一章包含一个完整的Objective-C示例程序
另有一个跨章节的Game Center案例
演示了如何进行组合多个iOS功能
内容简介
苹果的iOS SDK提供了很好强大的框架集合,即使到现在为止,找到这些框架的详细介绍和使用方法都
有一定困难。不过,借助本书的实用见解和经过验证的代码,你可以使用苹果公司提供的这些框架来创建更有创意、更实用的应用,同时也会让编写代码的过程更加快速、让代码更加可靠,也让应用更加成功、更有市场。
Kyle Richter和Joe Keeley关注专业开发者每天都会用到的一些中不错技术,涉及的技术范围从支持社交网络到安全保障,从Core Data到iCloud,甚至有关Apple Watch的内容都包含在内。
作为一本便捷的模块化参考书,几乎每一章都会包含一个完整的Objective-C示例程序。另有一个跨章节的Game Center案例,也正好演示了多个iOS功能是如何进行组合的。
主要内容:
■  添加类似物理效果的动画和动作到UIView视图
■  使用Core Location确定设备的位置,显示自定义地图并实现地理围栏
■  在游戏和其他应用中加入带有社交元素的排行榜功能
■  访问音乐和图片集
■  使用HealthKit实现带有健康和健身功能的应用
■  通过HomeKit实现家居智能化
■  使用JSON在平台间传输数据
■  设置本地和远程通知
■  使用CloudKit实现数据的远程存储和同步
■  实现访问应用的extension功能
■  轻松添加AirPrint功能
■  在iOS 8和Yosemite设备之间提供连续的Handoff功能
■  学习有效使用Core Data
■  通过社交框架在应用中整合Twitter和Facebook
■  使用Grand Central Dispatch机制处理多线程任务
■  使用Keychain和Touch ID保护用户数据
■  定制集合视图
■  掌握大部分的手势识别方法
■  创建和发送“通行证”到Passbook
■  调试工具的介绍及应用的优化
作者简介
Kyle Richter是MartianCraft公司的CEO,MartianCraft公司曾赢得Mobile Development Studio称号。Kyle在20世纪90年代初就开始从事软件开发工作,并始终专注于基于苹果公司平台的开发,他在iOS开发方面已经出版和共同出版了多种著作,包括Beginning iOS Game Center Development、Beginning Social Game Development和iOS Components and Frameworks。利用管理MartianCraft公司每日运营的同时,Kyle还要在优选出差,介绍有关开发和公司管理的经验。现在佛罗里达群岛是他的家,因为在那里他要花时间陪伴他可爱的边境牧羊犬。你也可以通过@kylerichter在Twitter上找到他。

Joe Keeley是MartianCraft公司的合伙人及首席工程师。Joe为iOS客户项目提供技术指导并知名品牌了许多成功的项目。他从Apple Ⅱ开始就热衷于程序开发,在他的职业生涯中从事过许多不同技术和系统项目的开发。在美国,Joe出版了多种有关iOS和Mac技术开发的参考书。Joe和妻子及两个女儿居住在科罗拉多州丹佛市,在闲暇时间他喜欢从事击剑运动。他在Twitter上的名字是@jwkeeley。
目录
目    录
第1章  UIKit Dynamics 1
1.1  示例程序 1
1.2  UIKit Dynamics介绍 2
1.3  UIKit Dynamics具体实现 2
1.3.1  重力效果 3
1.3.2  碰撞效果 4
1.3.3  附着效果 6
1.3.4  弹跳效果 7
1.3.5  瞬间位移 8
1.3.6  推力效果 8
1.3.7  元素属性 10
1.4  深入了解UIDynamicAnimator和UIDynamicAnimatorDelegate 11
1.5  小结 12
第2章  Core Location、MapKit和Geofencing框架 13
2.1  示例程序 13
2.2  获取用户位置 13
2.2.1  请求和允许 14
2.2.2  检查服务 16
2.2.3  开始位置请求 17
2.2.4  解析和理解位置数据 19
2.2.5  重大变更通知 20
2.2.6  使用GPX文件测试指定位置 20
2.3  显示地图 21
2.3.1  了解坐标系 21
2.3.2  MKMapKit配置和自定义 22
2.3.3  对用户操作的响应 23
2.4  地图标注和覆盖物 24
2.4.1  添加标注 24
2.4.2  显示标准和自定义的标注视图 26
2.4.3  可拖曳的标注视图 29
2.4.4  使用地图覆盖物 30
2.5  地理编码和反向地理编码 31
2.5.1  对地址进行地理编码 31
2.5.2  对位置进行反向地理编码 35
2.6  地理围栏 38
2.6.1  判断区域监控是否可用 38
2.6.2  定义边界 38
2.6.3  监控变更 39
2.7  获取路径 41
2.8  小结 45
第3章  排行榜 47
3.1  示例程序 47
3.1.1  弹出仙人掌 49
3.1.2  仙人掌间的相互影响 51
3.1.3  显示生命值和得分 53
3.1.4  暂停和恢复 54
3.1.5  有关Whack-a-Cac游戏的最后问题 55
3.2  iTunes Connect 55
3.3  Game Center管理器 58
3.4  认证 60
3.4.1  常见的认证错误 60
3.4.2  iOS 6和新的认证系统 62
3.5  提交得分 64
3.5.1  向Whack-a-Cac中添加得分 66
3.5.2  展示排行榜 68
3.5.3  得分挑战 70
3.5.4  深入讨论排行榜 71
3.6  小结 72
第4章  成就系统 73
4.1  iTunes Connect 73
4.2  显示成就进度 75
4.3  Game Center Manager和认证 76
4.4  成就系统缓存 76
4.5  上报成就系统 77
4.6  添加成就关联 79
4.7  进度完成通知栏 80
4.8  成就挑战系统 80
4.9  向Whack-a-Cac添加成就系统 83
4.9.1  是否达成成就 83
4.9.2  部分完成的成就 85
4.9.3  多会话成就 86
4.9.4  携带成就和保存成就精度 87
4.9.5  基于时间的成就 88
4.10  重置成就系统 89
4.11  深入讨论成就系统 90
4.12  小结 91
第5章  Address Book框架初步 93
5.1  支持Address Book很重要 93
5.2  Address Book开发的限制 93
5.3  示例程序 94
5.4  开始实现Address Book并运行 94
5.4.1  从Address Book读取数据 96
5.4.2  从Address Book读取多值数据 97
5.4.3  理解Address Book标签 98
5.4.4  处理地址信息 99
5.5  Address Book图形用户界面 100
5.6  编写代码来创建联系人 105
5.7  小结 107
第6章  Music Libraries框架 109
6.1  示例程序 109
6.2  创建播放引擎 110
6.2.1  注册播放通知 111
6.2.2  用户控制 112
6.2.3  处理状态改变 114
6.2.4  时长和计时器 118
6.2.5  随机播放和循环播放 119
6.3  资源选择器 119
6.4  编程实现选择器 121
6.4.1  播放随机歌曲 121
6.4.2  谓词匹配 123
6.5  小结 124
第7章  实现HealthKit框架 125
7.1  HealthKit介绍 125
7.2  Health.app介绍 126
7.3  示例程序 126
7.4  向项目添加HealthKit 127
7.5  请求授权Health Data 128
7.6  读取HealthKit特征数据 130
7.7  读写基本的HealthKit数据 131
7.8  读写复杂的HealthKit数据 133
7.9  小结 137
第8章  实现HomeKit框架 139
8.1  示例程序 139
8.2  HomeKit介绍 139
8.3  设置HomeKit组件 140
8.3.1  设置开发者账号 140
8.3.2  启用HomeKit功能 141
8.3.3  家庭管理器 142
8.3.4  家庭 143
8.3.5  房间和区域 144
8.3.6  附件 146
8.3.7  服务和服务组 149
8.3.8  动作和动作集 151
8.4  使用HomeKit Accessory Simulator进行测试 152
8.5  使用触发器计划动作 153
8.6  小结 154
第9章  JSON的使用和解析 155
9.1  JSON 155
9.1.1  使用JSON的好处 155
9.1.2  JSON资源 156
9.2  示例程序 156
9.3  访问服务器 156
9.4  从服务器获取JSON 156
9.4.1  创建请求 157
9.4.2  检查反馈 157
9.4.3  解析JSON 158
9.4.4  显示数据 158
9.5  发送消息 160
9.5.1  JSON数据编码 160
9.5.2  向服务器发送JSON数据 162
9.6  小结 163
第10章  通知机制 165
10.1  本地通知和推送通知的区别 165
10.2  示例程序 166
10.3  应用设置 166
10.4  创建Development Push SSL Certificate 168
10.5  开发配置文件 171
10.6  准备自定义声音 175
10.7  注册通知 175
10.8  设置本地通知 176
10.9  接收通知 178
10.10  推送通知服务器 179
10.11  发送推送通知 179
10.12  处理APNs反馈 180
10.13  小结 181
第11章  基于CloudKit的云存储 183
11.1  CloudKit基础 183
11.2  示例程序 184
11.3  设置CloudKit项目 184
11.3.1  账户设置 184
11.3.2  启用iCloud功能 185
11.4  CloudKit概念 186
11.4.1  容器 186
11.4.2  数据库 186
11.4.3  记录 186
11.4.4  记录区域 187
11.4.5  记录标识符 187
11.4.6  asset对象 187
11.5  CloudKit基础操作 188
11.5.1  获取记录 188
11.5.2  创建并保存记录 189
11.5.3  更新和保存记录 191
11.6  订阅和推送 191
11.6.1  推送设置 192
11.6.2  数据变更的订阅 192
11.7  用户发现和管理 193
11.8  在dashboard中管理数据 197
11.9  小结 199
第12章  extension 201
12.1  extension的类型 201
12.1.1  Today 201
12.1.2  Share 202
12.1.3  Action 202
12.1.4  Photo Editing 202
12.1.5  Document Provider 202
12.1.6  Custom Keyboard 202
12.2  理解extension 202
12.3  API限制 203
12.4  创建extension 203
12.5  Today extension 205
12.6  在host app和extension间共享代码和信息 206
12.7  Apple Watch extension 207
12.8  小结 209
第13章  Handoff 211
13.1  示例程序 211
13.2  Handoff基础 211
13.3  实现Handoff 213
13.3.1  创建用户活动 213
13.3.2  继续执行一个活动 215
13.4  在基于文档的应用中实现Handoff 216
13.5  小结 218
第14章  AirPrint 219
14.1  AirPrint打印机 219
14.2  测试AirPrint 220
14.3  打印文本 221
14.3.1  打印信息 222
14.3.2  设置页面范围 222
14.3.3  UISimpleTextPrint-
Formatter 223
14.3.4  错误处理 223
14.3.5  开始一个打印任务 224
14.3.6  打印机模拟器反馈 224
14.4  打印中心 225
14.5  打印呈现的HTML 226
14.6  打印PDF 227
14.7  小结 228
第15章  开始使用Core Data 229
15.1  Core Data的选择 230
15.2  示例程序 231
15.3  开始一个Core Data项目 232
15.4  创建托管对象模型 235
15.4.1  创建实体 236
15.4.2  添加特性 236
15.4.3  建立关系 237
15.4.4  自定义托管对象子类 238
15.5  设置默认数据 238
15.5.1  插入新的托管对象 239
15.5.2  其他默认的数据设置
方法 240
15.6  显示托管对象 240
15.6.1  创建取回请求 241
15.6.2  根据对象ID取回托管对象 242
15.6.3  显示对象数据 244
15.6.4  使用谓词 245
15.7  取回结果控制器介绍 246
15.7.1  准备取回结果控制器 247
15.7.2  整合表视图和取回结果控制器 248
15.7.3  对Core Data变化的响应 250
15.8  添加、编辑和删除托管对象 253
15.8.1  插入新的托管对象 253
15.8.2  删除托管对象 254
15.8.3  编辑现有的托管对象 255
15.8.4  保存和回滚修改 255
15.9  小结 257
第16章  使用社交框架整合Twitter和Facebook 259
16.1  示例程序 259
16.2  用户登录 260
16.3  使用SLComposeView-Controller 261
16.4  使用自定义界面发送消息 263
16.4.1  向Twitter发送消息 263
16.4.2  向Facebook发送消息 267
16.4.3  创建Facebook应用 267
16.5  访问用户时间轴 272
16.5.1  Twitter 272
16.5.2  Facebook 277
16.6  小结 281
第17章  后台任务处理 283
17.1  示例程序 283
17.2  检查后台运行的可行性 284
17.3  在后台完成任务 285
17.3.1  后台任务标识符 286
17.3.2  超时处理程序 286
17.3.3  完成后台任务 287
17.4  实现后台活动 288
17.4.1  后台活动的类型 288
17.4.2  在后台播放音乐 289
17.5  小结 292
第18章  多线程开发的性能 293
18.1  示例程序 293
18.2  队列介绍 294
18.3  在主线程上运行 295
18.4  在后台运行 296
18.5  在操作队列中运行 298
18.5.1  并发操作 298
18.5.2  串行操作 299
18.5.3  取消操作 301
18.5.4  自定义操作 302
18.6  在调度队列中运行 303
18.6.1  并发调度队列 304
18.6.2  串行调度队列 305
18.7  小结 307
第19章  使用Keychain和TouchID保护并访问数据 309
19.1  示例程序 310
19.2  创建和使用Keychain 310
19.2.1  创建新的KeychainItemWrapper 310
19.2.2  保存和获取PIN 312
19.2.3  Keychain特性键 312
19.2.4  保护字典对象 313
19.2.5  重置Keychain元素 315
19.2.6  在应用间共享Keychain 315
19.2.7  Keychain错误代码 316
19.3  实现Touch ID 317
19.4  小结 318
第20章  处理图片和过滤器 319
20.1  示例程序 319
20.2  基本图片数据和显示 319
20.2.1  实例化图片 319
20.2.2  显示图片 321
20.2.3  使用图片选择器 323
20.2.4  调整图片尺寸 325
20.3  Core Image过滤器 326
20.3.1  过滤器类别和过滤器 326
20.3.2  过滤器特性 328
20.3.3  初始化图片 331
20.3.4  渲染过滤后的图片 331
20.3.5  链式过滤 332
20.4  特征检测 333
20.4.1  创建人脸检测器 334
20.4.2  处理人脸特征 334
20.5  小结 336
第21章  集合视图 337
21.1  示例程序 337
21.2  集合视图介绍 338
21.2.1  创建一个集合视图 338
21.2.2  为集合视图实现数据源方法 340
21.2.3  实现集合视图委托方法 342
21.3  定制集合视图和流布局 344
21.3.1  基础定制 344
21.3.2  修饰视图 346
21.4  创建定制布局 349
21.5  集合视图动画 353
21.5.1  集合视图布局切换 354
21.5.2  集合视图布局动画 355
21.5.3  集合视图变化动画 357
21.6  小结 357
第22章  TextKit介绍 359
22.1  示例程序 359
22.2  NSLayoutManager介绍 360
22.3  动态链接检测 362
22.4  检测点击 363
22.5  路径排除 364
22.6  Content Specific Highlighting特性 365
22.7  使用Dynamic Type更改字体设置 370
22.8  小结 371
第23章  手势识别 373
23.1  手势识别的类型 373
23.2  基础手势识别的用法 374
23.3  示例程序介绍 375
23.3.1  点击识别动作 375
23.3.2  捏压识别动作 377
23.4  在一个视图中识别多个手势 378
23.4.1  手势识别的工作原理 380
23.4.2  在一个视图中识别多个手势:Redux 381
23.4.3  请求手势识别失败 382
23.5  定制UIGestureRecognizer子类 384
23.6  小结 384
第24章  访问照片库 385
24.1  示例程序 385
24.2  Photos框架 386
24.3  使用资源集合和资源 386
24.3.1  权限 387
24.3.2  资源集合 388
24.3.3  资源 391
24.4  照片库中的编辑操作 393
24.4.1  编辑资源集合 393
24.4.2  编辑资源 395
24.5  处理照片流 398
24.6  小结 398
第25章  Passbook和PassKit 399
25.1  示例程序 400
25.2  设计通行证 400
25.2.1  通行证的类型 400
25.2.2  通行证布局——登机牌 401
25.2.3  通行证布局——优惠券 401
25.2.4  通行证布局——入场券 402
25.2.5  通行证布局——通用卡 402
25.2.6  通行证布局——购物卡 402
25.2.7  通行证的显示 403
25.3  创建通行证 404
25.3.1  基础通行证标识 405
25.3.2  通行证相关信息 405
25.3.3  条形码识别 406
25.3.4  通行证视觉外观信息 406
25.3.5  通行证区域 407
25.4  通行证的签名和封装 409
25.4.1  创建Pass Type ID 409
25.4.2  创建通行证签名证书 411
25.4.3  创建清单 415
25.4.4  通行证的签名和封装 415
25.4.5  测试通行证 416
25.4.6  具体应用中的通行证交互 417
25.5  自动更新通行证 426
25.6  小结 426
第26章  调试和工具 427
26.1  调试 427
26.1.1  第一个计算机错误 427
26.1.2  Xcode基础调试 428
26.2  断点 430
26.2.1  定制断点 430
26.2.2  标志断点和异常断点 431
26.2.3  断点范围 432
26.3  使用调试器 432
26.4  工具 433
26.4.1  工具界面 434
26.4.2  Time Profiler工具 436
26.4.3  Leaks工具 438
26.4.4  进一步了解调试工具 440
26.5  小结 440
摘要
序    言
从2008年iPhone SDK(现在叫iOS SDK)的第一个测试版发布之日起,我就一直从事有关iOS的开发工作。那时我主要关注有关Mac桌面程序的开发,没有过多考虑移动应用的开发。
如果你希望成为一个早期开发者,那你只能靠自己了。苹果公司一贯的做法就是文档非常少,并且由于访问SDK需要NDA——秘密解码环,因此最初你只能靠自己。你还不能在Google上或打开StackOverflow寻求到帮助,并且那时也一定没有任何介绍SDK的书籍。
从苹果发布最初的iPhone到现在已经走过漫漫8年时光(是的,真的只有8年)。iPhone SDK现在也被称为iOS SDK。有关iOS开发的书籍和博客,以及播客和研讨会层出不穷。从2009年起,WWDC大会变得更加难以参加,使得新老开发者在学习最新的平台技术时变得越发困难。尤其对于iOS开发者,要学的新东西真的太多了。
作为一名iOS开发者,我遇到的最大的难题就是设法驾驭苹果工具箱(kit)中所有的组件和框架。iOS HIG本能帮助到我们,不过它对于组件和框架的介绍还不够详细深入。现在我们确实能够通过Google或者结合StackOverflow找到资料,不过这些资料一般都仅解释了如何去做,很少探究为什么要那样做,通常也无法做到很详细地分析。
所以Kyle和Joe决定这样做——给出所有这些框架的详细介绍,让读者可以全面了解组成iOS SDK的核心框架。
很荣幸与Kyle和Joe相识多年。他们是我所见过的最聪明的开发者。这些年来他们都各自编写了大量优秀的应用,并通过分享他们的经验为iOS开发社区不断贡献自己的力量,不断在研讨会上发表出色演讲,出版有关iOS开发的书籍。如果你有任何关于iOS的问题,有机会得到Kyle和Joe的解答将会是一件很美妙的事情。
不过让他们如此优秀的原因还不仅是他们如百科全书一般的iOS开发知识,更在于他们愿意同遇到的每个人分享这些宝贵的知识。Kyle和Joe没有竞争对手,有的只是朋友。
Kyle和Joe对于iOS SDK的深入理解贯穿本书,这也是我喜欢本书的原因之一。本书对每个组件都进行了详细介绍,有些内容甚至在网上都很难找到。
我还非常喜欢本书的结构。读者不需要从头到尾阅读。相反,你可能因为需要了解如何实现集合视图而翻开本书,或者在想学习如何在后台线程上运行任务时打开本书。在你需要本书时只需打开它,找到解决办法,将其在自己的代码中实现,然后再把它放回书架上直到下次再遇到困难。这就是该书能够成为iOS开发者最重要的一本参考书籍的原因,不管你是初学者还是经验丰富的老手。你可能觉得自己精通Core Location和MapKit,不过我觉得你在本书中一定能找到以前没有接触过的知识。
Kyle和Joe为人非常谦虚,从不骄傲自大。他们从来不认为自己比其他开发者优秀。他们将这种精神一点点灌输到Mac和iOS开发者社区,使其成为一个开发者之间互助学习的大平台,对这个行业的发展帮助很大。这本著作也是他们无私分享多年经验和知识的另一个见证。
本书同Mark和LaMarche及Sadun的著作一样,将始终伴随在我手边。当我在2008年第一次开始做iOS开发时我多希望有这么一本书。现在终于如愿以偿,有了这本书就方便多了。

— Kirby Turner
White Peak Software公司首席程序员,Learning iPad Programming: A Hands-On Guide to Building iPad Apps, Second Edition(Addison-Wesley Professional)一书的作者,Cocoa开发者社区的管理者和研讨会的热衷者。


前    言
欢迎阅读《精通iOS框架(第2版)》!
对于现在的读者来说,几乎有上百种“iOS入门教程”可供选择,介绍特定专题的进阶教程也数不胜数,例如专门介绍Core Data知识或者专门介绍有关数据安全方面的教程。不过令人感到困惑的是还没有一种书能够作为初学者向更高级内容前进的桥梁。
撰写本书旨在向读者介绍中高级的开发知识,因为这些看起来零散的框架很多都无法单独出书。并不是这些框架不够吸引人,而是因为它们还不能算是一个很大的专题,不需要过多篇幅的介绍。从如何使用JSON到如何访问照片库,这些框架都是专业iOS开发者每天都会用到的,不过市面上少有书籍介绍它们。
此外,对很多进阶内容的讨论也要考虑到面对的读者可能是初学者。翻开一本500页的Core Data教程也是需要勇气的,不过还好本书第15章给出了一个简捷的Core Data入门教程。其他有关类似的入门教程还包括调试和工具、TextKit、HomeKit、HealthKit和CloudKit等章节。
对于Game Center排行榜和成就榜、AirPrint、音乐库、地址簿和Passbook的内容则给出详细全面的讲解。无论你是刚刚完成第一个iOS项目开发的初学者还是一名经验丰富的资深开发人员,都可以从本书中找到对你有帮助的内容。
书中所有章节的内容都根据iOS 8版本进行了更新。如果你遇到有关兼容性的问题请联系我们,我们会发布更新并进行修改。
如果你对本书的内容有任何建议,或者发现并修改了本书的一些错误,它们都对本书后续版本有很大的帮助,可以通过mastering.ios.frameworks@gmail.com联系我们。我们非常愿意听取任何能使本书变得更加完善的建议,并会不断致力于让本书更加完美。
需要具备的知识
本书尽力让所有的示例程序和知识讲解更加简单易懂,不过它毕竟还是一本针对中高级开发者的参考书。所以为了更好地使用这本书,你需要具备基本的iOS开发知识,以及Objective-C和C语言的知识,熟悉Xcode、Developer Portal、iTunes Connect和Instruments工具的使用。学习Objective-C和iOS的内容时可以参阅Stephen G. Kochan撰写的Programming in Objective-C一书和Maurice Sharp、Rod Strougo及Erica Sadun共同撰写的Learning iOS Development一书。
准备工作
虽然可以借助iOS模拟器开发并测试iOS应用,不过我们还是建议你至少拥有一款iOS设备用于测试:
● Apple iOS Developer Account:iOS开发工具Xcode和iOS SDK的最新版本可以从苹果公司网站上的Developer Portal进行下载(http://developer.apple.com/ios)。要在App Store上发布应用或者在一台个人设备上安装并测试应用,需要支付每年99美元的开发者账号费用。
● Macintosh Computer:要开发iOS程序并运行Xcode,你需要一台能够运行最新发布的OS X系统的Mac机器。
● Internet Connection:iOS开发中的很多功能都需要你的Mac机器和iOS设备保持网络连接。
本书结构
除了个别章节(Game Center和Core Data)之外,本书的每一章都是独立的。你可以按照顺序从头到尾阅读本书,也可以跳过一些你暂时不需要的专题而直接找到你需要的内容,我们撰写本书的目的就是使其成为一种能够解决大部分iOS开发任务的快捷参考书。
下面是各章简介:
第1章“UIKit Dynamics”:iOS 7增加了UI Kit Dynamics元素,可以让UIView添加模拟物理运动的动画效果。你会学到如何给对象添加标准的动态动画效果、设置物理属性等功能。从重力效果到元素属性设置,按照从易到难的顺序介绍7种效果的实现方法。
第2章“Core Location、MapKit和Geofencing框架”:iOS 6带来了全新的苹果地图和相关数据。该章会介绍如何通过使用Core Location来确定设备的位置,如何在应用中显示地图,以及如何在地图上使用自定义标注、覆盖和弹出气泡。还会介绍如何设置地理监控区域(地理围栏),当设备进入或离开一个区域时设备会有提醒。
第3章“排行榜”:Game Center排行榜提供了一种非常简单的方式让你的iOS游戏或应用增加社交元素。该章会带来一个名为Whack-a-Cac的iPad游戏,我们为其添加一个排行榜。用户将会学到实现Game Center排行榜的所有步骤,同时也会对如何实现带有自定义界面的排行榜有所了解。
第4章“成就系统”:该章继续使用前几章介绍的Whack-a-Cac游戏。你将学习到如何在这个iPad游戏中实现成就系统。从如何使用iTunes Connect到显示成就进度,该章为你提供了所有快速创建成就系统所需的信息。
第5章“Address Book框架初步”:很多项目现在都将地址簿整合到应用中,Address Book框架是iOS系统最老的几个框架之一。该章你会学到如何使用这个框架,学习如何使用用户选取器、如何访问源地址数据以及如何修改并保存该数据。
第6章“Music Libraries框架”:该章介绍如何在一个自定义应用中访问用户音乐库,包括如何查看具体音乐的信息数据以及如何从专辑中选择并播放一首乐曲。
第7章“实现HealthKit框架”:HealthKit用于实现在应用间共享健康相关信息的功能。该章介绍如何开始使用HealthKit,之后介绍如何访问HealthKit中的数据,以及如何读取和写入不同类型的健康相关数据。
第8章“实现HomeKit框架”:该章介绍如何开始使用HomeKit,它可以让iOS设备同智能家居设备进行通信。其中还对如何设置HomeKit进行了介绍,以及如何发现、开启设备和如何同这些设备进行互动,例如灯、锁或仓库大门的遥控器等。
第9章“JSON的使用和解析”:JSON的全称为JavaScript Object Notation,是一种能够在不同平台和架构间传输数据的轻量级数据传输协议。所以它成为iOS客户端和服务器间传输复杂数据时最常用的协议。该章会介绍如何从一个现有的对象创建JSON以及如何将JSON解析为iOS对象。
第10章“通知机制”:iOS支持两种类型的通知机制,分别是本地通知和远程通知。本地通知主要用于设备没有连接网络的情况;远程通知需要通过网络再经过苹果公司的Push Notification Service服务器推送通知到设备。该章会介绍两种通知机制的差异,并演示如何在一个应用中创建和使用这两种通知机制。
第11章“基于CloudKit的云存储”:CloudKit提供公共的和私人的数据存储模式。该章会介绍基础的CloudKit概念,并通过创建一个应用来演示如何使用CloudKit实现远程存储和同步个人及公共数据的功能。
第12章“extension”:extension机制提供了一种在应用沙盒之外访问应用功能的功能。该章介绍几种不同类型的extension,并演示如何创建一个Today extension和一个Apple Watch extension。
第13章“Handoff”:Handoff是iOS 8和Yosemite最新引进的一种应用延续机制,它可以让用户在不同设备间进行切换,而应用无缝地在设备间进行延续。该章会介绍基础的Handoff机制,并演示根据开发者定义的activity和基于文档的activity实现Handoff功能。
第14章“AirPrint”:AirPrint可以让用户通过无线方式在支持AirPrint的打印机上打印文档和图片,不过该框架属于iOS提供的众多框架中不太常用的。该章介绍如何在应用中快速有效地添加AirPrint打印功能。在该章的最后,你会学习到打印视图、图片、PDF文档甚至渲染HTML文件。
第15章“开始使用Core Data”:该章会介绍如何让应用使用Core Data、如何设置Core Data模型,以及如何在应用中实现最常用的Core Data工具。如果你没有时间钻研那本500页的Core Data参考书,那么该章再适合你不过了。
第16章“使用社交框架整合Twitter和Facebook”:整合社交元素是智能计算的未来,现在公认的做法是希望将所有应用都加入社交元素。该章会教你如何使用Social框架向应用中添加Facebook和Twitter功能。你会学到如何使用内置的整合功能创建新的Twitter和Facebook消息,还会学到如何从服务器获取反馈信息以及如何解析得到的数据。最后介绍如何使用该框架从自定义的用户界面上发送消息。完成该章的学习之后,你会对Social Framework有很深的理解,可以自如地在应用中添加Twitter和Facebook功能。
第17章“后台任务处理”:当应用离开前台运行时能够在后台继续完成某些任务是一个很重要的功能,这个功能在iOS 4版本中被加入进来,并随着时间的推移更加完善。该章会介绍当应用离开前台后是如何在后台运行的,以及如何执行iOS指定的一些特殊后台任务。
第18章“多线程开发的性能”:在主线程执行一些资源占用高的程序时可能会使系统变慢。该章会介绍一些由Grand Central Dispatch机制提供的方法,用于处理由于影响主线程性能表现的复杂并发问题。
第19章“使用Keychain和TouchID保护并访问数据”:保护用户数据的安全性是一件非常重要的事,但有时却被粗心的开发者忽略了。几年前甚至有一家大公司因为使用明文对用户信用卡信息和密码进行存储而被大家批评。该章首选会介绍使用Keychain来保护用户数据,然后将开发涉及的安全性问题作为整体进行详细讲解。通过该章的学习你可以在用户设备上使用Keychain对任何小规模数据类型进行保护,这样用户就可以放心地使用这些数据了。
第20章“处理图片和过滤器”:该章首先介绍一些基础的图片处理技术,之后介绍一些有关如何应用过滤器的高级Core Image技术。示例程序对所有Core Image提供的方法给出了演示,并创建过滤链来实现实时交互功能。
第21章“集合视图”:集合视图是iOS 6中引入的一个功能强大的API,可以让开发者更加灵活地处理可滑动界面的布局以及基于单元格的内容排版。除了新的布局功能之外,集合视图还提供了精彩的动画效果,在集合视图内容的淡入淡出及视图间的切换时都可以添加动画效果。
第22章“TextKit介绍”:iOS 7中引入了TextKit框架,它非常容易上手,是对Core Text非常重要的扩展。TextKit可以让开发者在应用中提供非常丰富且互动性很强的字体格式。虽然TextKit是一个比较大的话题,不过该章会介绍一些基础的知识并实现一些常见的功能,例如从环绕图片添加文字到内嵌自定义字体属性。完成该章的学习之后,其实是为后面更深入地学习TextKit打下非常坚实的基础。
第23章“手势识别”:该章会介绍如何在应用中使用手势识别。同直接处理和解析触碰数据不同的是,手势识别对象可以提供一个简单且干净的方法来识别一些常见的手势动作并给予反馈。此外,还可以自定义手势并使用手势识别对象对其进行识别。
第24章“访问照片库”:现在iPhone实际上已经成为最流行的照相机,看看Flickr上用户上传的大量图片就可以证明这一点。该章会介绍如何访问用户照片库,并在自定义应用中处理这些照片和视频。示例程序演示了如何创建一个和iOS 8版本的Photos.app类似概念的应用。
第25章“Passbook和PassKit”:iOS 6中苹果公司引入了Passbook,它是一个独立的应用,用于保存用户的各种“卡”,或者诸如飞机票、优惠券、会员卡和演唱会门票等凭证。该章会介绍如何设置通行证,以及如何创建并发布它们,还有如何在应用中同它们进行交互。
第26章“调试和工具”:程序开发最重要的一部分工作就是能够调试和优化软件。很少有书籍会介绍这方面的内容,即使是简单的介绍也很少见。本章为你讲解了在Xcode中如何调试程序以及使用工具分析程序的性能。首先我们讲述了计算机错误的历史,之后逐步介绍了有关一些常见错误的提示和识别方法。然后简单介绍了断点的使用和调试器命令,并使用Time Profiler和Leaks工具分别对程序代码和程序内存的使用情况进行了分析。学习完该章后,你将对如何在模拟器和真机设备上定位程序错误及调试iOS应用打下坚实基础。
示例程序
本书的每个章节都是独立的(除了个别章节),同时除了第26章“调试和工具”之外,所有的章节都具有自己的示例程序。第3章“排行榜”和第4章“成就系统”使用同一个示例项目,基于这个项目演示各自的功能。每章都会对示例程序进行简单的介绍,并逐步让读者理解示例程序中包含的一些复杂内容,而不是直接介绍本章的理论内容。
我们致力于让示例程序简单易懂,所以有些代码可能没有进行很好的优化,可能也不是解决特定问题的最优方法。所以在每章内容中我们都会指出一些在实际创建应用时哪些步骤是不合适的。示例程序不是独立的应用,它主要用于演示相应章节所介绍的功能。本书的示例程序被特意设计为通用程序,所以读者应该关注章节中介绍的主要内容而不是那些同相应章节无关的代码。为将一些非必要的组件从示例程序中删除,我们进行了大量的工作,同时将代码行尽可能压缩。
很多读者看到示例程序中的代码可能会觉得意外,因为没有使用Swift语言,而是用的Objective-C,本书就是这样设计的。因为所有的API都是用Objective-C写的,所以使用Objective-C可以更加容易地进行互动,而使用Swift还需要额外添加解释起来比较复杂的层。如果读者习惯使用Swift后,可以很容易地将概念移植到Swift中。示例程序前缀为“ICF”,大部分示例程序的名字都是章节标题名。
当学习Game Center章节时,bundle ID关联了我们个人苹果账号的真实应用,以确保例子能够继续运行。这个例子还可以让读者学习到当开发者对同一个示例程序进行互动时会生成多个用户数据。对于iCloud、推送通知和Passbook这3章,应用需要的设置都在相应的章节内容中进行了全面介绍,要在实际工作中使用这些程序,读者必须为自己的开发者账户创建一个新的App ID才可以。
获取示例程序
要随时获取最新版本的源代码,可以访问https://github.com/dfsw/icf网站下面的Mastering文件夹,也可以访问http://www.tupwk.com.cn/downpage。这些代码都是面向公众的且是开源的。源代码按照章节分成各自的压缩文件,包含Xcode项目,每个章节都只包含一个项目。我们鼓励读者提供有关源代码的反馈信息并提出建议,这样我们就可以让工作更加严谨,并在本书出版之后不断对其进行改进。
安装并使用GitHub
Git即版本控制系统,多年来深受开发者的喜爱。要使用GitHub上的代码,你首先需要在Mac上安装Git。在Xcode命令行工具安装包中包含一个命令行版本的Git,或者你还可以通过http://git-scm.com/downloads地址找到Git的安装文件。此外,Git还有许多前端GUI形式,甚至有一个就是用GitHub开发的,这样可以更好地帮助开发者了解Git,避免命令行晦涩难懂。如果你不想安装Git,GitHub也允许你以压缩格式下载源文件。
用户可以在https://github.com/signup/free上免费注册GitHub账户。Git安装好之后,在终端程序中输入命令行$git clone git@github.com: dfsw/icf.git就可以将一份源代码的拷贝下载到当前工作目录中。这一版书中用到的示例程序都在Mastering文件夹下。欢迎大家对示例代码提出修改建议。
联系作者
如果关于本书有任何意见或问题,可以通过mastering.ios.frameworks@gmail.com邮箱与我们联系,或者在Twitter上@kylerichter和@jwkeeley。
致谢
要感谢所有为了本书默默在幕后付出的人,如果没有他们就没有这本书,虽然封面上的作者只有两个人的名字,不过这本书是通过大家的帮助才顺利完成的。首先要感谢的是Trina MacDonald,如果不是她的领导才能和对我们的不断督促,我们可能永远无法完成本书的撰写。Pearson的编辑们也给了我们极大的帮助,正是他们的不断努力,从一点小的错误到技术问题都逐页进行勘察,使本书变得更加完美。NiklasSaers、Olivia Basegio、Justin Williams、Sheri Replin、Elaine Wiley、Cheri Clark、ChutiPrasertsith和 Gloria Shurick也为本书的完成做出了贡献。
还要感谢Langille Design (http://jordanlangille.com)工作室的Jordan Langille,他为我们提供了第3章和第4章Whack-a-Cac游戏的设计方案。正是他的帮助让Game Center示例项目变得更加引人入胜。
不止我们自己为了撰写本书付出了大量的时间,家人和同事同样为此付出了许多时间。我们要感谢身边所有人的付出,让我们能有时间专注于本书的编写。
最后,还要非常感谢开发社区的朋友们。我们经常在开发者论坛上和博客里咨询大家问题,谢谢大家的提问和无私的反馈。如果不是iOS开发社区中大量参与者的努力,本书很可能就无法完成了。

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网