新書推薦:
《
高敏感女性的力量(意大利心理学家FSP博士重磅力作。高敏感是优势,更是力量)
》
售價:HK$
62.7
《
元好问与他的时代(中华学术译丛)
》
售價:HK$
87.4
《
汽车传感器结构·原理·检测·维修
》
售價:HK$
109.8
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:HK$
65.0
《
罗马政治观念中的自由
》
售價:HK$
50.4
《
中国王朝内争实录:宠位厮杀
》
售價:HK$
61.6
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:HK$
44.6
《
未来特工局
》
售價:HK$
55.8
編輯推薦:
创造销售奇迹的经典著作
针对iOS SDK新特性全面改版
借助苹果公司大量翔实的文档
从这里,拥抱软件开发的未来
带你走上创建iOS应用程序的大道
具备了创建专业级iPhone和iPad应用程序所需的一切条件
內容簡介:
iPhone是一个全新的移动平台,苹果公司为它推出了强大的软件开发工具包iOS SDK。本书是一部关于iOS SDK开发的基础教程,内容翔实、语言生动。书中结合消费类设备上常见的实例,循序渐进地讲解了适用于iPhone4、iPad及iPod touch开发的基本流程,从下载安装开发工具到使用各种iOS界面元素,从不同的视图设计模式到构建表格的技巧,以及SQLite、CoreData等持久化技术,涵盖了iOS开发的方方面面。
本书内容完整丰富,具有较强的通用性,编程领域中各层次读者都能通过本书快速学习iOS开发,提高相关技能。
關於作者:
Dave Mark 深受爱戴的Apple技术开发专家,具有多年开发经验。他撰写过许多Mac平台和iOS开发方面的畅销书,比如《iPad开发基础教程》(中文版已由人民邮电出版社出版)。目前专注于iPhone技术图书的写作。
Jack Nutting 资深Apple技术专家,Objective-C和Cocoa框架的坚定拥护者。除本书外,还与人合著了Learn Cocoa on the Mac。他有时会在www.nuthole.com上发表博客。
Jeff LaMarche 资深Apple平台专家,拥有多年企业级开发经验。他是MacTech Magazine和Apple公司开发人员网的专栏作家。
目錄 :
目 录
第1章 欢迎来到iPhone世界 1
1.1 关于本书 1
1.2 必要条件 1
1.2.1 开发者的选择 3
1.2.2 必备知识 4
1.3 编写iOS应用程序有何不同 4
1.3.1 只有一个应用程序正在运行 5
1.3.2 只有一个窗口 5
1.3.3 受限访问 5
1.3.4 有限的响应时间 5
1.3.5 有限的屏幕大小 5
1.3.6 有限的系统资源 6
1.3.7 不支持垃圾收集 6
1.3.8 新功能 6
1.3.9 与众不同的方法 7
1.4 本书内容 7
1.5 本次更新的内容 8
1.6 准备开始吧 8
第2章 创建基本项目 9
2.1 在Xcode中设置项目 9
2.2 Interface Builder简介 14
2.2.1 nib文件的构成 15
2.2.2 在视图中添加标签 16
2.2.3 改变属性 18
2.3 美化iPhone应用程序 19
2.4 小结 22
第3章 处理基本交互 23
3.1 MVC范型 23
3.2 创建项目 24
3.3 创建视图控制器 24
3.3.1 输出口 25
3.3.2 操作 26
3.3.3 将操作和输出口添加到视图控制器 27
3.3.4 将操作和输出口添加到实现文件 30
3.4 使用应用程序委托 34
3.5 编辑MainWindow.xib 36
3.6 编辑Button_FunViewController.xib 37
3.6.1 在Interface Builder中创建视图 37
3.6.2 连接所有元素 40
3.6.3 测试 43
3.7 小结 43
第4章 更丰富的用户界面 44
4.1 满是控件的屏幕 44
4.2 活动和被动控件 46
4.3 创建应用程序 46
4.4 实现图像视图和文本字段 47
4.4.1 确定输出口 47
4.4.2 确定操作 48
4.4.3 添加图像视图 49
4.4.4 添加文本字段 52
4.4.5 设置第二个文本字段的属性 55
4.4.6 连接输出口 55
4.5 关闭键盘 55
4.5.1 完成输入后关闭键盘 56
4.5.2 通过触摸背景关闭键盘 57
4.6 实现滑块和标签 59
4.6.1 确定输出口和操作 59
4.6.2 添加输出口和操作 60
4.6.3 添加滑块和标签 61
4.6.4 连接操作和输出口 62
4.7 实现开关、按钮和分段控件 62
4.7.1 添加输出口和操作 62
4.7.2 添加开关、按钮和分段控件 65
4.7.3 连接开关输出口和操作 66
4.7.4 添加按钮 66
4.8 实现操作表和警报 67
4.8.1 遵从操作表委托方法 67
4.8.2 显示操作表 68
4.8.3 使用操作表委托 70
4.9 美化按钮 71
4.9.1 viewDidLoad方法 71
4.9.2 控件状态 72
4.9.3 可拉伸图像 72
4.10 成为出色的内存使用者 73
4.11 小结 74
第5章 自动旋转和自动调整大小 75
5.1 自动旋转机制 75
5.2 使用自动调整属性处理旋转 77
5.2.1 指定旋转支持 77
5.2.2 使用自动调整属性设计界面 79
5.2.3 大小检查器的自动调整属性 80
5.2.4 设置按钮的自动调整属性 81
5.3 在旋转时重构视图 82
5.3.1 声明和连接输出口 83
5.3.2 在旋转时移动按钮 84
5.4 切换视图 85
5.4.1 确定输出口和操作 86
5.4.2 声明操作和输出口 87
5.4.3 设计两个视图 88
5.4.4 实现交换和操作 88
5.5 小结 91
第6章 多视图应用程序 92
6.1 多视图应用程序的常见类型 92
6.2 多视图应用程序的体系结构 94
6.2.1 根控制器 95
6.2.2 内容视图剖析 96
6.3 构建View Switcher 96
6.3.1 创建视图控制器和nib文件 97
6.3.2 修改应用程序委托 99
6.3.3 SwitchViewController.h 101
6.3.4 添加视图控制器 101
6.3.5 构建包含工具栏的视图 103
6.3.6 编写根视图控制器 104
6.3.7 实现内容视图 108
6.3.8 制作转换动画 110
6.4 小结 113
第7章 标签栏与选取器 114
7.1 Pickers应用程序 114
7.2 委托和数据源 117
7.3 建立工具栏框架 117
7.3.1 创建文件 117
7.3.2 添加根视图控制器 118
7.3.3 编辑MainWindow.xib 120
7.3.4 连接输出口,然后运行 123
7.4 实现日期选取器 124
7.5 实现单个组件选取器 126
7.5.1 声明输出口和操作 126
7.5.2 构建视图 127
7.5.3 将控制器实现为数据源和委托 127
7.6 实现多组件选取器 131
7.6.1 声明输出口和操作 131
7.6.2 构建视图 132
7.6.3 实现控制器 132
7.7 实现独立组件 135
7.8 使用自定义选取器创建简单游戏 141
7.8.1 编写控制器头文件 141
7.8.2 构建视图 142
7.8.3 添加图像资源 143
7.8.4 实现控制器 143
7.8.5 最后的细节 149
7.8.6 链接Audio Toolbox框架 153
7.9 小结 154
第8章 表视图简介 155
8.1 表视图基础 156
8.1.1 表视图和表视图单元 156
8.1.2 分组表和无格式表 157
8.2 实现一个简单的表 158
8.2.1 设计视图 158
8.2.2 编写控制器 158
8.2.3 添加一个图像 161
8.2.4 表视图单元样式 163
8.2.5 设置缩进级别 165
8.2.6 处理行的选择 165
8.2.7 更改字体大小和行高 167
8.3 定制表视图单元 168
8.3.1 单元应用程序168
8.3.2 使用UITableViewCell的自定义子类 172
8.4 分组分区和索引分区 176
8.4.1 构建视图 176
8.4.2 导入数据 177
8.4.3 实现控制器 177
8.4.4 添加索引 181
8.5 实现搜索栏 181
8.5.1 重新考虑设计 181
8.5.2 深层可变副本 182
8.5.3 更新控制器头文件 184
8.5.4 修改视图 185
8.5.5 修改控制器实现 186
8.6 小结 197
第9章 导航控制器和表视图 198
9.1 导航控制器 198
9.1.1 栈的性质 198
9.1.2 控制器栈 199
9.2 由6个部分组成的分层应用程序:Nav 200
9.2.1 子控制器 200
9.2.2 Nav应用程序的骨架 203
9.2.3 第一个子控制器:展示按钮视图 209
9.2.4 第二个子控制器:校验表 217
9.2.5 第三个子控制器:表行上的控件 221
9.2.6 第四个子控制器:可移动的行 227
9.2.7 第五个子控制器:可删除的行 233
9.2.8 第六个子控制器:可编辑的详细窗格 239
9.2.9 其他内容 257
9.3 小结 260
第10章 iPad开发注意事项 261
10.1 分割视图和浮动窗口 261
10.2 创建SplitView项目 263
10.3 xib定义结构 264
10.4 代码定义功能 265
10.5 显示总统信息 272
10.6 创建浮动窗口 276
10.7 小结 282
第11章 应用程序设置和用户默认设置 283
11.1 设置束 283
11.2 AppSettings应用程序 284
11.2.1 创建项目 286
11.2.2 使用设置束 286
11.2.3 读取应用程序中的设置 297
11.2.4 更改应用程序中的默认设置 302
11.2.5 实现逼真效果 305
11.3 小结 307
第12章 保存数据 308
12.1 应用程序的沙盒 308
12.1.1 获取Documents目录 309
12.1.2 获取tmp目录 310
12.2 文件保存策略 310
12.2.1 单个文件持久性 310
12.2.2 多个文件持久性 311
12.3 属性列表 311
12.3.1 属性列表序列化 311
12.3.2 持久性应用程序的第一个版本 312
12.4 对模型对象进行归档 317
12.4.1 符合NSCoding 318
12.4.2 实现NSCopying 319
12.4.3 对数据对象进行归档和取消归档 319
12.4.4 归档应用程序 320
12.5 使用iPhone的嵌入式SQLite3 324
12.5.1 创建或打开数据库 325
12.5.2 绑定变量 327
12.5.3 SQLite3应用程序 327
12.6 使用Core Data 334
12.6.1 实体和托管对象 335
12.6.2 Core Data应用程序 339
12.7 小结 348
第13章 Grand Central Dispatch、后台处理及其应用 349
13.1 Grand Central Dispatch 349
13.2 SlowWorker简介 350
13.3 线程基础知识 352
13.4 工作单元 353
13.5 GCD:低级队列 354
13.5.1 傻瓜式操作 354
13.5.2 改进SlowWorker 355
13.6 后台处理 360
13.6.1 应用程序生命周期 361
13.6.2 状态更改通知 361
13.6.3 创建State Lab 363
13.6.4 执行状态 364
13.6.5 利用执行状态更改 365
13.6.6 处理不活动状态 366
13.6.7 处理后台状态 370
13.7 小结 378
第14章 使用Quartz和OpenGL绘图 379
14.1 图形世界的两个视图 379
14.2 Quart绘图方法 380
14.2.1 Quartz 2D的图形上下文 380
14.2.2 坐标系 381
14.2.3 指定颜色 382
14.2.4 在上下文中绘制图像 383
14.2.5 绘制形状:多边形、直线和曲线 383
14.2.6 Quartz 2D工具示例:模式、梯度、虚线模式 384
14.3 QuartzFun应用程序 384
14.3.1 构建QuartzFun应用程序 384
14.3.2 添加Quartz Drawing代码 394
14.3.3 优化QuartzFun应用程序 398
14.4 GLFun应用程序 401
14.4.1 构建GLFun应用程序 402
14.4.2 使用OpenGL绘图 404
14.4.3 完成GLFun 411
14.5 小结 411
第15章 轻击、触摸和手势 412
15.1 多触摸术语 412
15.2 响应者链 413
15.2.1 响应者链中的对象 413
15.2.2 转发事件:保持响应者链的活动状态 414
15.3 多触摸体系结构 415
15.3.1 将触摸相关代码放在何处 415
15.3.2 4个手势通知方法 415
15.4 检测触摸 416
15.4.1 构建一个Touch Explorer应用程序 417
15.4.2 运行Touch Explorer 419
15.5 检测轻扫 419
15.5.1 构建Swipes应用程序 420
15.5.2 使用自动手势识别 423
15.5.3 实现多个轻扫动作 424
15.6 检测多次轻击 425
15.7 检测捏合操作 430
15.8 创建和使用自定义手势 433
15.8.1 定义选中标记手势 433
15.8.2 将勾选标记手势附加到视图 435
15.9 小结 437
第16章 Core Location定位功能 438
16.1 位置管理器 438
16.1.1 设置所需的精度 439
16.1.2 设置距离筛选器 439
16.1.3 启动位置管理器 439
16.1.4 更明智地使用位置管理器 440
16.2 位置管理器委托 440
16.2.1 获取位置更新 440
16.2.2 使用CLLocation获取纬度和经度 440
16.2.3 错误通知 442
16.3 尝试使用Core Location 442
16.3.1 更新位置管理器 446
16.3.2 确定移动距离 447
16.4 小结 447
第17章 加速计 448
17.1 加速计物理学 448
17.2 不要忘记旋转 449
17.3 Core Motion和动作管理器 449
17.3.1 基于事件的动作 450
17.3.2 主动动作访问 455
17.3.3 加速计结果 457
17.4 检测摇动 458
17.4.1 Baked-In摇动 459
17.4.2 摇动与击碎 459
17.5 将加速计用作方向控制器 464
17.5.1 滚弹珠程序 464
17.5.2 编写Ball View 466
17.5.3 计算小球运动 469
17.6 小结 472
第18章 iPhone照相机和照片库 473
18.1 使用图像选取器和UIImagePicker-Controller 474
18.2 实现图像选取器控制器委托 475
18.3 实际测试照相机和库 476
18.3.1 设计界面 477
18.3.2 实现照相机视图控制器 477
18.4 小结 481
第19章 应用程序本地化 482
19.1 本地化体系结构 482
19.2 字符串文件 483
19.2.1 字符串文件里面是什么 484
19.2.2 本地化的字符串宏 484
19.3 现实中的iPhone:本地化应用程序 485
19.3.1 创建LocalizeMe 485
19.3.2 测试LocalizeMe 489
19.3.3 本地化nib文件 489
19.3.4 本地化图像 492
19.3.5 生成和本地化字符串文件 493
19.3.6 本地化应用程序显示名称 495
19.4 小结 496
第20章 未来之路 497
20.1 别陷进单一的思路里 497
20.1.1 苹果公司的文档 497
20.1.2 邮件列表 498
20.1.3 论坛 498
20.1.4 网站 499
20.1.5 博客 499
20.2 参考资料 500
20.3 作者 501
20.4 再会 501
內容試閱 :
欢迎来到iPhone世界
你
想编写iPhone、iPod
touch和iPad应用程序?哦,这事也怪不得你。事实上,所有这些设备最核心的软件——iOS恐怕要算是长久以来最吸引人的新平台了。毫无疑问,它是迄今为止最有趣的移动平台,特别是现在,苹果公司还提供了一组好用的、具有良好文档的工具来支持iOS应用程序的开发。随着iOS软件开发工具包(SDK)第4版的发布,这一切变得更加美好。
1.1 关于本书
本书将带你走上创建iOS应用程序的大道。我们的目标是让你通过初步学习,理解iOS应用程序的运行和构建方式。在学习过程中,你将创建一系列小型应用程序,每个应用程序都会突出某些iOS特性,展示如何控制这些特性或与其交互。如果你扎实地掌握了本书中的基本知识,充分发挥自己的创造力,并且坚定不移,同时借助苹果公司大量翔实的文档,你就具备了创建专业级iPhone和iPad应用程序所需的一切条件。
说明Dave、Jack和Jeff为本书创办了一个论坛。这个论坛是志趣相投的人们互相交流的理想地点,可以在这里获取问题的答案,也可以回答别人的问题。论坛地址为http:iphonedevbook
comforum。一定要访问此论坛哦!
1.2 必要条件
在开始编写iOS软件之前,需要做一些准备工作。初学者需要一台运行Snow Leopard(OS X
10.6.5或更高版本)的基于Intel的Macintosh计算机。任何最近上市的基于Intel的Macintosh计算机(不管是笔记本还是台式机)应该都符合要求。
你还需要注册成为iOS开发人员。只有完成这一步,苹果公司才允许下载iOS SDK。
注册请访问http:developer.apple.comios,这会打开如图1-1所示的页面。
首先点击Log in按钮,页面将提示你输入Apple ID。如果你还没有Apple ID,请单击Create Apple
ID按钮创建一个,然后再登录。登录之后,将进入iOS开发主页面。其中不仅有SDK的下载链接,还有各类文档、视频和示例代码等的链接,所有这些资源都对开发iOS应用程序有帮助。
图1-1 苹果公司的iOS开发中心网站
这个页面上一个最重要的元素是Xcode,它是苹果公司的IDE(集成开发环境),必须下载。Xcode提供了各种实用工具,用于创建和调试源代码、编译应用程序以及调优应用程序性能。学习完本书,你将会迷上Xcode!
示例所用的SDK版本和源代码
随着SDK和Xcode版本的不断发展,下载它们的机制也将会改变。有时SDK和Xcode需要分开下载,有时它们可以合在一起下载。基本出发点是:你应该下载最新发布的SDK和Xcode版本(不是beta版)。
本书是针对最新的SDK版本编写的。在某些地方,我们选择使用第4版中引入的新函数或方法,它们可能与早期的SDK版本不兼容,出现这些情况时我们一定会指出。
请从本书的网站http:iphonedevbook.com下载最新和最优秀的源代码。
在发布新SDK版本时,我们将相应地更新代码,所以一定要定期查看该网站。
1.2.1 开发者的选择
这个可免费下载的SDK还包含一个模拟器,它支持在Mac上创建和运行iPhone与iPad程序。这对于学习编写iOS程序极其有用。但是,模拟器不支持依赖于硬件的某些特性,如iPhone的加速计或摄像功能。同时这个免费选项还不支持将应用程序下载到实际的iPhone或其他设备中。此外,它也不支持在苹果公司的App
Store上分发应用程序。要实现这些功能,需要注册使用另外两个下载选项中的一个,它们不是免费的。
?标准方案的价格为99美元年,它提供了大量开发工具、资源和技术支持,支持通过苹果公司的App
Store分发应用程序。最重要的是,标准方案支持在iOS上(而不只是在模拟器上)测试和调试代码。
?企业方案的价格为299美元年,面向开发专用的、内部的iOS应用程序的企业,以及为苹果公司的App
Store开发应用程序且拥有参与该项目的多名开发人员的企业。
有关这两种方案的详细信息,请访问http:developer.apple.comprogramsios及http:developer.
apple.com programsiosenterprise。
由于iOS是一种始终连网的移动设备,并且使用的是其他公司的无线基础设施,因此苹果公司对iOS开发人员的限制比对Mac开发人员多得多(Mac开发人员无需经过苹果公司的审查或批准就能够编写和分发程序)。尽管iPod
touch和只能使用Wi-Fi的iPad不允许使用其他的基础设施,它们仍然会面临同样的限制。
苹果公司添加这些限制,主要是为了尽量避免分发恶意或效率低下的程序,因为这类程序可能降低共享网络的性能。开发iOS应用程序似乎麻烦不少,但苹果公司在简化开发过程方面付出了巨大努力。还应该提及的是,99美元的价格比微软公司的软件开发IDE——Visual
Studio的价格低得多。
另外,很明显,你还需要一部iPhone手机、iPod
touch或iPad。虽然大部分代码都可以通过iOS模拟器进行测试,但并非所有程序都是如此。模拟器上运行的一些应用程序需要在实际的设备上全面测试,然后才能分发给公众。
说明如果已决定注册标准版或企业版方案,应该立即注册。批准过程可能需要一些时间,并且批准之后才能在实际的设备上运行应用程序。但是不必担心,前几章中的所有项目以及本书中的大多数应用程序,都可以在iOS模拟器上运行。
1.2.2 必备知识
学习本书应该具备一定的编程知识。你应该理解面向对象编程的基础知识,例如,了解对象、循环和变量的含义,还应该熟悉Objective-C编程语言。SDK中的Cocoa
Touch是本书使用的主要工具,它使用的是Objective-C
2.0,但是如果不了解Objective-C的新增特性也没有关系。我们将重点介绍要使用的Objective-C
2.0语言特性,并解释其工作原理和使用它的原因。
作为用户,你还应该熟悉iOS本身。就像在任何其他平台中编写应用程序一样,你需要熟悉iPhone、iPad或iPod
touch的各种特性,并了解iOS界面以及iPhone和iPad程序的外观。
Objective-C的学习资源
如果你从未使用Objective-C编写过程序,那么以下资源有助于你了解该语言。
首先,阅读Mac编程专家Mark Dalrymple和Scott
Knaster撰写的《Objective-C基础教程》,该书浅显易懂,是学习Objective-C基础知识的优秀图书。网址如下所示。
http:www.apress.combookview9781430218159
你可以参考Apple公司在Learning Objective-C: A Primer中对该语言的介绍:
http:developer.apple.comlibraryios#referencelibraryGettingStartedLearning_Objective-C_A_Primer
还可以读读Objective-C Programming
Language,其中对该语言的介绍非常详尽全面,是一个上佳的参考指南,从以下网站可以获取该书:
http:developer.apple.comlibraryios#documentationCocoaConceptualObjectiveC
最后一个资源可以从iPhone、iPod
touch或iPad的iBooks免费下载。有了这些资源就完美了,可以继续阅读了!苹果公司已经发布了此种形式的好几种开发资料,希望还有更多惊喜!在iBooks中搜索“apple
developer publications”可以找到这些内容。
1.3 编写iOS应用程序有何不同
如果从未使用过Cocoa或它的前期产品NextSTEP和OpenStep,那么你可能会发现Cocoa
Touch(用于编写iOS应用程序的应用程序框架)稍显另类。它与其他常用应用程序框架(如用于构建.NET或Java应用程序的框架)之间存在一些根本差异。你起初可能会有点不知所措,但不必担心,只要勤加练习,就可以掌握其中的规律。
如果你具备使用Cocoa或NextSTEP编程的经验,就会发现iOS SDK中有许多熟悉的身影。其中的许多类都是从用于Mac OS
X开发的版本中原样借鉴过来的,一些类即便存在不同,也遵循相同的基本原则,并使用与旧版本类似的设计模式。但是,Cocoa和Cocoa
Touch之间却存在一些差异。
无论你的知识背景如何,都需要谨记iOS开发与桌面应用程序开发之间的重要差异。
1.3.1 只有一个应用程序正在运行
在iOS上,特定时间段内仅激活一个应用程序并在屏幕上显示。从iOS
4开始,当用户按下home按钮后应用程序有时可能继续在后台运行,但是这种情况也只限于特定的场合。
当应用程序未激活或未运行于后台时,它不会引起CPU任何形式的注意,这将导致网络连接断开以及其他问题。iOS
4在后台处理能力方面已经有了大幅提升,但要使你的应用程序在这种情况下仍运行良好,还需要你自身的努力。
1.3.2 只有一个窗口
在桌面及笔记本电脑操作系统中,多个程序可以同时运行,并且可以分别创建和控制多个窗口。而iOS则有所不同,它只允许应用程序操作一个“窗口”。应用程序与用户的所有交互都在这个窗口中完成,而且这个窗口的大小就是iOS屏幕的大小,是固定的。
1.3.3 受限访问
计算机上的程序可以访问其用户能够访问的任何内容,而iOS则严格限制了应用程序的访问权限。
你只能在iOS为应用程序创建的文件系统中读写文件。此区域称为应用程序的沙盒,应用程序在其中存储文档、首选项等需要存储的各种数据。
应用程序还存在其他方面的限制。举例来说,你不能访问iOS上端口号较小的网络端口,也不能执行台式计算机中需要有根用户或管理员权限才能执行的操作。
1.3.4 有限的响应时间
由于使用方式特殊,iOS及其应用程序需要具备较快的响应时间。启动应用程序时,需要先打开它,载入首选项和数据,并尽快在屏幕上显示主视图,这一切要在几秒之内完成。
只要应用程序在运行,就可以从其下方拖出一个菜单条。如果用户按home按钮,iOS就会返回主页,用户需要快速保存一切内容并退出。如果未在5秒之内保存并放弃控制,则应用程序进程将终止,无论用户是否已经完成保存。
请注意,在iOS
4中,这种情况因为一种新API的存在而有所改善。这种API允许你的应用程序在终止前申请多一些的时间来处理。
1.3.5 有限的屏幕大小
iPhone的屏幕显示效果非常出色,从推出到现在,它一直是消费设备中分辨率最高的屏幕。
但是,iPhone的显示屏幕并不大,你施展的空间要比现代计算机小很多,最新的Retina显示器(iPhone 4和第4代iPod
touch)仅有640×960像素,更老的仅有320×480像素。
而且,现在的尺寸与以前相同,只不过Retina显示屏为640×960像素,所以不要以为可以放更多的控件或什么了——仅仅是分辨率比以前高了。
iPad稍大一些,是1024×768像素,但也不算很大。与此形成鲜明对比的是,在撰写本书时,苹果公司最便宜的iMac支持1920×1080像素,最便宜的笔记本电脑MacBook支持1280×800像素。而苹果公司最大的显示器,27英寸的LED
Cinema Display,支持超大的2560×1440像素。
1.3.6 有限的系统资源
阅读本书的任何资深程序员可能都会对256 MB内存、8
GB存储空间的机器嗤之以鼻,因为其资源实在是非常有限,但这种机器却是真实存在的。或许,开发iOS应用程序与在内存为48
KB的机器上编写复杂的电子表格应用程序不属于同一级别,二者之间没有可比性,但由于iOS的图形属性和它的功能,其内存不足是非常容易出现的。
目前上市的iOS的物理内存要么是256 MB,要么是512
MB,当然今后内存还会不断增长。内存的一部分用于屏幕缓冲和其他一些系统进程。通常,不到一半(也可能更少)的内存将留给应用程序使用。
虽然这些内存对于这样的小型计算机可能已经足够了,但谈到iOS的内存时还有另一个因素需要考虑:现代计算机操作系统,如Mac OS
X,会将一部分未使用的内存块写到磁盘的交换文件中。这样,当应用程序请求的内存超过计算机实际可用的内存时,它仍然可以运行。但是,iOS并不会将易失性内存(如应用程序数据)写到交换文件中。因此,应用程序可用的内存量将受到手机中未使用的物理内存量的限制。
Cocoa
Touch提供了一种内置机制,可以将内存不足的情况通知给应用程序。出现这种情况时,应用程序必须释放不需要的内存,甚至可能被强制退出。
1.3.7 不支持垃圾收集
之前已经说过,Cocoa Touch使用的是Objective-C 2.0,但该语言中的一个关键特性在iOS中并不可用:Cocoa
Touch不支持垃圾收集。
1.3.8 新功能
前面提过,Cocoa Touch缺少Cocoa的一些功能,但iOS
SDK中也有一些新功能是Cocoa所没有的,或者至少不是在任何Mac上都可用的。
?iPhone SDK为应用程序提供了一种定位方法,即用Core Location确定手机的当前地理坐标。
?大部分iOS还提供了一个内置的照相机和照片库,并且SDK允许应用程序访问这两者。
?iOS还提供了一个内置的加速计(在最新的iPhone、iPod
touch中有陀螺仪),用于检测机子的握持和移动方式。
1.3.9 与众不同的方法
iOS没有键盘和鼠标,这意味着在编程时它与用户的交互方式和通用的计算机截然不同。所幸的是,大多数交互都不需要你来处理。例如,如果在应用程序中添加一个文本字段,则iOS知道在用户单击该字段时调用键盘,你不需要编写任何额外的代码。
说明目前的设备支持通过蓝牙连接外部键盘,这提供了一种不错的键盘体验并节省了一定的屏幕空间,但这种使用情形仍然非常少。连接鼠标仍然完全行不通。
1.4 本书内容
下面是本书其余章节的简要概述。
第2章:讲述如何使用Xcode的搭档Interface Builder创建简单的界面,并在屏幕上显示一些文本。
第3章:介绍与用户的交互,构建一个简单的应用程序,用于在运行时根据用户按下的按钮动态更新显示的文本。
第4章:以第3章为基础,介绍其他一些iOS标准用户界面控件。此外,还将介绍如何使用警告框和操作表提醒用户作出决策,或者通知用户发生了一些异常事件。
第5章:了解如何处理自动旋转、自动改变大小属性,以及允许在纵向或横向模式下使用iOS应用程序的机制。
第6章:介绍更多高级用户界面,并阐述如何创建支持多视图界面的应用程序。我们将教你更改在运行时为用户显示的视图,以创建更加复杂的用户界面。
第7章:介绍如何在标准的iOS用户界面中实现标签条和拾取器。
第8章:介绍表视图。表视图是向用户提供数据列表的主要方法,并且是基于分层导航的应用程序的基础。这一章还会介绍如何让用户搜索应用程序数据。
第9章:介绍如何实现分层列表,它是最常用的iOS应用程序界面之一,你可以通过它查看更多或更详细的数据,学习实现这种标准界面时所涉及的技术。
第10章:iPad的外形与其他iOS设备不同,它需要用不同的方法来显示GUI,并借助一些组件来实现。这一章将介绍如何使用SDK中特定于iPad的内容。
第11章:介绍如何实现应用程序设置,iOS中的这种机制允许用户设置他们的应用程序级首选项。
第12章:介绍iOS中的数据管理。将讨论如何创建用于保存应用程序数据的对象,以及如何将这些数据持久存储到iOS的文件系统中。这一章还会介绍使用Core
Data的基础知识,Core Data可用于方便地保存和检索数据。
第13章:从iOS 4开始,开发人员可以使用Grand Central
Dispatch这种新方法进行多线程开发,还可以在某些情形下使他们的应用程序在后台运行。这一章将介绍如何实现此目的。
第14章:绘图是人们的普遍爱好,这一章介绍如何实现一些自定义绘图,这需要使用Quartz 2D和OpenGL
ES中的基本绘图函数。
第15章:iOS的多点触摸屏幕可以接受用户的各种手势输入。这一章讲述如何检测基本的手势,如双指捏合和单指滑动,还将介绍定义新手势的过程,并讨论新手势的适用情况。
第16章:iOS可以通过Core Location确定其纬度和经度。这一章将编写利用Core
Location计算设备的物理位置的代码,并在各种应用中使用该信息。
第17章:介绍如何与iOS加速计和陀螺仪交互,通过它们确定设备的持握方式及运动速度与方向。我们将讨论应用程序如何通过该信息完成一些有趣的任务。
第18章:每个iOS都有自己的摄像设备和图片库,这两者都可供应用程序使用。这一章介绍如何使用它们。
第19章:iOS设备现已遍及90多个国家。这一章介绍以何种方式编写应用程序,能方便地把应用程序的所有部分翻译为其他语言,从而发掘应用程序的潜在用户。
第20章:至此,你已经掌握了iPhone和iPad应用程序的基本构建方法。这一章将探索掌握iOS SDK的后续步骤。
1.5 本次更新的内容
自本书上一版上市以来,iOS开发领域发生了很多事情。iOS开发社区的发展尤为显著。SDK一直在发展,苹果公司对SDK进行了大量更新。
当然,我们也很忙。从获悉SDK
4已面世那一刻起,我们就投入工作了。我们更新了每个项目,以确保每个项目的代码不但能在最新版的Xcode和SDK下编译,而且还能够充分利用Cocoa
Touch提供的最新和最出色的特性。我们对全书进行了大量细微调整,也添加了数量可观的重大改变,包括代码以及解释。另外,我们新增了一个有关线程和多任务执行的章和有关iPad开发的章。当然我们也对全书重新进行了屏幕截图。
1.6 准备开始吧
iOS是一款出色的、令人难以置信的计算平台,是快乐开发的新领域。编写iOS应用程序将成为一种全新的体验,这种体验与之前你使用过的任何平台都不同。所有看似熟悉的功能都具有其独特的一面,但随着深入本书中的代码,你将能把这些概念紧密联系起来并融会贯通。
应该谨记,本书中的练习并不只是一份代码清单。完成这些练习之后,你也许就能成为iOS开发专家。在继续下一个项目之前,请确保已经理解了之前的概念和原理。不要害怕修改代码。多多尝试并观察结果是在Cocoa
Touch等环境中克服编码困难的最佳方法。
如果你已经安装了iOS SDK,请继续阅读本书;如果还没有,请立即安装。然后开始iOS