(特价书)iPhone开发入门经典

更多详情


内容简介: 本书基于Apple最新发布的iPhone OS 3.0编写,循序渐进地介绍了从事iPhone开发所需的基本知识,包括使用Xcode、Interface Builder、Objective-C和Cocoa Touch等开发工具,设计及美化用户界面,读写和显示数据,播放和录制多媒体,调试、优化和发布应用程序等主题。
本书通过简洁的语言和详细的步骤,帮助读者迅速掌握开发iPhone应用程序所需的基本知识,适合没有任何编程经验的新手阅读,也可供有志于从事iPhone开发的人员参考。

目录: 第1章 为开发准备好系统和iPhone 1
1.1 欢迎进入iPhone平台 1
1.1.1 显示屏和图形 1
1.1.2 应用程序资源约束 2
1.1.3 连接性 3
1.1.4 输入和反馈 3
1.2 成为iPhone开发人员 3
1.2.1 加入Apple开发人员计划 4
1.2.2 安装iPhone开发工具 6
1.3 创建开发供应配置文件 7
1.3.1 什么是开发供应配置文件 7
1.3.2 生成并安装开发供应配置文件 8
1.3.3 使用iPhone应用程序测试配置文件 14
1.4 开发技术概述 15
1.4.1 Apple开发套件 16
1.4.2 Objective-C 16
1.4.3 CoCoa Touch 16
1.4.4 模型-视图-控制器 16
1.5 小结 17
1.6 问与答 17
1.7 作业 17
1.7.1 测验 17
1.7.2 答案 17
1.7.3 练习 18
第2章 Xcode和iPhone模拟器简介 19
2.1 使用Xcode 19
2.1.1 创建和管理项目 20
2.1.2 删除文件和资源 23
2.1.3 编辑和导航代码 24
2.1.4 生成应用程序 28
2.1.5 项目属性 30
2.2 使用iPhone模拟器 31
2.2.1 在模拟器中启动应用程序 32
2.2.2 模拟多点触摸事件 33
2.2.3 旋转iPhone 33
2.2.4 模拟其他情况 34
2.3 小结 35
2.4 问与答 35
2.5 作业 35
2.5.1 测验 35
2.5.2 答案 35
2.5.3 练习 36
2.6 进一步探索 36
第3章 探索Apple平台语言Objective-C 37
3.1 面向对象编程和Objective-C 37
3.1.1 什么是面向对象编程 38
3.1.2 面向对象编程术语 39
3.1.3 什么是Objective-C 40
3.2 探索Objective-C文件结构 40
3.2.1 头文件/接口文件 41
3.2.2 实现文件 44
3.2.3 免费获取结构 45
3.3 Objective-C编程基础 45
3.3.1 声明变量 46
3.3.2 分配、初始化和释放对象 47
3.3.3 使用方法及发送消息 48
3.3.4 表达式和决策 49
3.4 内存管理 52
3.4.1 释放对象 53
3.4.2 使用autorelease方法 53
3.4.3 保留对象 53
3.4.4 在dealloc中释放实例变量 54
3.4.5 释放规则 54
3.5 小结 54
3.6 问与答 55
3.7 作业 55
3.7.1 测验 55
3.7.2 答案 55
3.7.3 练习 56
3.8 进一步探索 56
第4章 Cocoa Touch内幕 57
4.1 Cocoa Touch是什么 57
4.1.1 冷静面对大量的功能 58
4.1.2 年轻但成熟 58
4.2 探索iPhone技术层 59
4.2.1 Cocoa Touch层 59
4.2.2 多媒体层 60
4.2.3 核心服务层 60
4.2.4 核心OS层 61
4.3 跟踪iPhone应用程序的生命周期 62
4.4 Cocoa基础 63
4.4.1 核心应用程序类 63
4.4.2 数据类型类 64
4.4.3 界面类 66
4.5 使用Xcode探索iPhone框架 68
4.5.1 Xcode文档 68
4.5.2 快速帮助 70
4.6 小结 71
4.7 问与答 71
4.8 作业 72
4.8.1 测验 72
4.8.2 答案 72
4.8.3 练习 72
第5章 探索Interface Builder 73
5.1 了解Interface Builder 73
5.1.1 Interface Builder采用的方法 74
5.1.2 剖析Interface Builder XIB文件 74
5.2 创建用户界面 77
5.2.1 对象库 77
5.2.2 布局工具 78
5.3 定制界面外观 81
5.3.1 使用属性检查器 81
5.3.2 设置辅助功能属性 82
5.3.3 测试界面 83
5.4 连接到代码 84
5.4.1 在Xcode中启动Interface Builder 84
5.4.2 实现概述 85
5.4.3 输出口和操作 86
5.4.4 对象身份 89
5.5 小结 89
5.6 问与答 90
5.7 作业 90
5.7.1 测验 90
5.7.2 答案 90
5.7.3 练习 91
5.8 进一步探索 91
第6章 模型-视图-控制器应用程序设计 92
6.1 了解设计模式模型-视图-控制器 92
6.1.1 制作“意大利面条式”代码 93
6.1.2 使用MVC将应用程序设计结构化 93
6.2 Xcode和Interface Builder如何实现MVC 94
6.2.1 视图 94
6.2.2 视图控制器 94
6.2.3 数据模型 95
6.3 使用模板View-Based Application 96
6.3.1 实现概述 96
6.3.2 创建项目 97
6.3.3 在视图控制器中创建输出口和操作 100
6.3.4 创建视图 101
6.3.5 实现视图控制器逻辑 105
6.3.6 释放内存 106
6.3.7 生成应用程序 106
6.4 小结 107
6.5 问与答 107
6.6 作业 107
6.6.1 测验 107
6.6.2 答案 107
6.6.3 练习 107
6.7 进一步探索 108
第7章 使用文本、键盘和按钮 109
7.1 基本用户输入和输出 109
7.1.1 按钮 109
7.1.2 文本框和文本视图 110
7.1.3 标签 110
7.2 使用文本字段、文本视图和按钮 110
7.2.1 实现概述 111
7.2.2 创建项目 111
7.2.3 创建输出口和操作 112
7.2.4 添加文本框 113
7.2.5 添加文本视图 117
7.2.6 创建风格独特的按钮 119
7.2.7 隐藏键盘 125
7.2.8 实现视图控制器逻辑 127
7.2.9 释放对象 128
7.2.10 生成应用程序 128
7.3 小结 129
7.4 问与答 129
7.5 作业 129
7.5.1 测验 129
7.5.2 答案 129
7.5.3 练习 130
7.6 进一步探索 130
第8章 处理图像、动画和滑块 131
8.1 用户输入和输出 131
8.1.1 滑块 131
8.1.2 图像视图 132
8.2 创建并管理图像动画和滑块 132
8.2.1 实现概述 132
8.2.2 创建项目 133
8.2.3 添加动画资源 133
8.2.4 准备输出口和操作 133
8.2.5 添加图像视图 134
8.2.6 添加滑块 137
8.2.7 完成界面的创建 140
8.2.8 实现视图控制器逻辑 141
8.2.9 释放对象 143
8.2.10 生成应用程序 143
8.3 小结 144
8.4 问与答 144
8.5 作业 144
8.5.1 测验 144
8.5.2 答案 144
8.5.3 练习 144
8.6 进一步探索 145
第9章 使用高级界面控件 146
9.1 用户输入和输出 146
9.1.1 开关 146
9.1.2 分段控件 147
9.1.3 Web视图 148
9.1.4 可滚动的视图 149
9.2 使用开关、分段控件和Web视图 149
9.2.1 实现概述 149
9.2.2 创建项目 150
9.2.3 创建输出口和操作 150
9.2.4 添加分段控件 151
9.2.5 添加开关 155
9.2.6 添加Web视图 156
9.2.7 完成界面 158
9.2.8 实现视图控制器逻辑 159
9.2.9 释放对象 162
9.2.10 生成应用程序 162
9.3 使用可滚动视图 163
9.3.1 实现概述 163
9.3.2 创建项目 163
9.3.3 创建输出口 164
9.3.4 添加可滚动视图 164
9.3.5 实现滚动行为 166
9.3.6 释放对象 167
9.3.7 生成应用程序 167
9.4 小结 167
9.5 问与答 167
9.6 作业 167
9.6.1 测验 167
9.6.2 答案 168
9.6.3 练习 168
9.7 进一步探索 168
第10章 使用选择器选择多种值 169
10.1 了解选择器 169
10.1.1 日期选择器 170
10.1.2 选择器视图 170
10.2 使用日期选择器 172
10.2.1 实现概述 172
10.2.2 创建项目 172
10.2.3 添加日期选择器 173
10.2.4 完成界面 175
10.2.5 实现视图控制器逻辑 176
10.3 实现自定义选择器视图 179
10.3.1 实现概述 179
10.3.2 创建项目 180
10.3.3 添加选择器视图 181
10.3.4 完成界面 182
10.3.5 向选择器提供数据 183
10.3.6 对用户在选择器中选择值做出反应 187
10.3.7 微调选择器UI 190
10.4 小结 193
10.5 问与答 193
10.6 作业 194
10.6.1 测验 194
10.6.2 答案 194
10.6.3 练习 194
10.7 进一步探索 194
第11章 引起用户注意 196
11.1 探索通知用户的方法 196
11.1.1 准备通知项目文件 196
11.1.2 创建通知项目的界面 198
11.1.3 连接到输出口和操作 198
11.2 生成警告 199
11.2.1 显示简单警告 200
11.2.2 创建多选项警告 201
11.3 使用操作表 203
11.3.1 显示操作表 204
11.3.2 修改操作表的外观 206
11.3.3 对用户按下操作表按钮做出响应 206
11.4 使用警告声音和震动 207
11.4.1 系统声音服务 207
11.4.2 播放声音和警告 208
11.4.3 震动iPhone 210
11.5 小结 210
11.6 问与答 210
11.7 作业 210
11.7.1 测验 210
11.7.2 答案 211
11.7.3 练习 211
11.8 进一步探索 211
第12章 使用工具栏创建简单的多视图应用程序 212
12.1 探索单视图应用程序和多视图应用程序 212
12.2 创建多视图应用程序 213
12.2.1 实现概述 213
12.2.2 创建项目 214
12.2.3 实例化视图控制器 215
12.2.4 使用工具栏来切换视图 217
12.3 小结 223
12.4 问与答 223
12.5 作业 223
12.5.1 测验 223
12.5.2 答案 223
12.5.3 练习 224
12.6 进一步探索 224
第13章 使用选项卡栏管理多视图界面 225
13.1 选项卡栏和选项卡栏控制器 225
13.2 创建多视图选项卡栏应用程序 226
13.2.1 实现概述 226
13.2.2 创建项目 226
13.2.3 添加选项卡栏控制器 228
13.2.4 配置视图控制器类 230
13.2.5 实现AreaView视图 230
13.2.6 实现VolumeView视图 236
13.2.7 实现SummaryView视图 239
13.3 小结 241
13.4 问与答 242
13.5 作业 242
13.5.1 测验 242
13.5.2 答案 242
13.5.3 练习 242
13.6 进一步探索 243
第14章 使用表视图显示和导航数据 244
14.1 了解表视图 244
14.1.1 表视图的类型 244
14.1.2 实现概述 245
14.2 创建简单的表视图应用程序 246
14.2.1 准备视图控制器 246
14.2.2 给表视图提供数据 249
14.3 响应行触摸事件 254
14.4 了解基于导航的应用程序 255
14.5 创建基于导航的多视图应用程序 256
14.5.1 创建项目 256
14.5.2 给应用程序提供数据 257
14.5.3 创建详细视图 260
14.5.4 实现根表视图控制器 263
14.5.5 处理导航事件 265
14.5.6 微调UI 266
14.6 小结 267
14.7 问与答 268
14.8 作业 268
14.8.1 测验 268
14.8.2 答案 268
14.8.3 练习 268
14.9 进一步探索 269
第15章 存储应用程序首选项 270
15.1 设计方面的考虑 270
15.2 案例研究 272
15.2.1 Apple应用程序 272
15.2.2 ESPN ScoreCenter 274
15.3 读写用户默认设置 274
15.3.1 隐式首选项 275
15.3.2 使用Settings应用程序 279
15.3.3 在应用程序中设置首选项 286
15.4 小结 290
15.5 问与答 291
15.6 作业 291
15.6.1 测验 291
15.6.2 答案 291
15.6.3 练习 291
15.7 进一步探索 291
第16章 读写数据 293
16.1 应用程序沙箱 293
16.1.1 应用程序数据的存储位置 294
16.1.2 文件路径 295
16.2 应用程序FlashCards 296
16.2.1 创建FlashCard类 296
16.2.2 添加输出口和操作 297
16.2.3 设置UI并连接到输出口和操作 298
16.2.4 添加另一个视图控制器 301
16.2.5 实现应用程序的逻辑 303
16.3 对象归档 309
16.3.1 归档FlashCard对象 310
16.3.2 在FlashCards应用程序中归档 311
16.4 Core Data 313
16.4.1 Core Data的起源 313
16.4.2 Core Data简介 314
16.4.3 应用程序FlashCardsCore Data 315
16.5 小结 326
16.6 问与答 327
16.7 作业 327
16.7.1 测验 327
16.7.2 答案 327
16.7.3 练习 327
16.8 进一步探索 328
第17章 创建可旋转及调整大小的用户界面 329
17.1 可旋转和调整大小的界面 329
17.1.1 启用界面旋转 329
17.1.2 设计可旋转和调整大小的界面 331
17.2 使用Interface Builder创建可旋转和调整大小的界面 332
17.2.1 创建项目 332
17.2.2 创建灵活的界面 332
17.3 旋转时调整控件的框架 335
17.3.1 创建项目 336
17.3.2 创建界面 337
17.3.3 实现调整框架的逻辑 340
17.4 旋转时切换视图 341
17.4.1 创建项目 341
17.4.2 创建界面 342
17.4.3 实现视图切换逻辑 344
17.5 小结 346
17.6 问与答 346
17.7 作业 346
17.7.1 测验 346
17.7.2 答案 346
17.7.3 练习 347
17.8 进一步探索 347
第18章 扩展触摸界面 348
18.1 多点触摸手势架构 349
18.2 检测轻按 350
18.2.1 添加输出口 350
18.2.2 设计UI并连接到输出口 351
18.2.3 编写代码 352
18.3 检测轻扫 360
18.3.1 更新游戏 360
18.3.2 识别轻扫 361
18.4 检测张合 363
18.4.1 更新游戏 363
18.4.2 识别张合手势 365
18.5 使用摇动手势 368
18.5.1 更新游戏 368
18.5.2 检测摇动 370
18.6 小结 373
18.7 问与答 373
18.8 作业 373
18.8.1 测验 373
18.8.2 答案 373
18.8.3 练习 374
18.9 进一步探索 374
第19章 使用加速计输入检测移动 375
19.1 加速计简介 376
19.2 检测朝向 377
19.2.1 添加输出口 378
19.2.2 设计UI并连接到输出口 378
19.2.3 实现UIAccelerometerDelegate协议 379
19.3 检测倾斜 382
19.3.1 添加输出口 382
19.3.2 设计UI并连接到输出口 382
19.3.3 实现UIAccelerometerDelegate协议 383
19.4 检测移动 385
19.5 小结 386
19.6 作业 386
19.6.1 测验 386
19.6.2 答案 386
19.6.3 练习 387
19.7 进一步探索 387
第20章 使用多媒体 388
20.1 探索多媒体框架 388
20.1.1 Media Player框架 389
20.1.2 AV Foundation框架 389
20.2 创建用于练习使用多媒体的应用程序 389
20.2.1 编辑项目文件 390
20.2.2 创建应用程序界面 391
20.2.3 连接到输出口和操作 392
20.3 使用电影播放器 393
20.3.1 添加Media Player框架 393
20.3.2 添加多媒体文件 393
20.3.3 实现电影播放 394
20.3.4 执行清理工作 395
20.4 录制和播放音频 396
20.4.1 添加AV Foundation框架 397
20.4.2 实现录音功能 397
20.4.3 实现音频播放功能 399
20.4.4 执行清理工作 399
20.5 访问并播放iPod库 400
20.5.1 实现多媒体选择器 401
20.5.2 实现音乐播放器 403
20.6 小结 405
20.7 问与答 405
20.8 作业 405
20.8.1 测验 405
20.8.2 答案 405
20.8.3 练习 406
20.9 进一步探索 406
第21章 与其他应用程序交互 407
21.1 从iPhone图像库和相机获取图像 407
21.2 创建并发送电子邮件 414
21.3 访问地址簿 419
21.4 小结 425
21.5 问与答 425
21.6 作业 425
21.6.1 测验 425
21.6.2 答案 425
21.6.3 练习 426
21.7 进一步探索 426
第22章 实现地图和定位服务 427
22.1 Core Location 428
22.1.1 位置管理器 428
22.1.2 一个使用Core Location的应用程序 432
22.1.3 添加Core Location框架和输出口 432
22.1.4 设计UI并连接到输出口 433
22.1.5 实现位置管理器代理 435
22.2 Map Kit 438
22.2.1 添加Map Kit框架和地图视图控制器 439
22.2.2 经过一定的延迟后显示地图视图 439
22.2.3 导入Map Kit框架并添加一个输出口 441
22.2.4 设计UI 442
22.2.5 限制地图的范围 442
22.2.6 添加地图标注 443
22.3 指南针 447
22.3.1 位置管理器和位置管理器代理 447
22.3.2 添加输出口和属性 448
22.3.3 设计UI并添加箭头图像 449
22.3.4 请求航向更新及存储当前位置 450
22.3.5 计算前往查布尔希尔的航向 451
22.4 小结 454
22.5 问与答 454
22.6 作业 455
22.6.1 测验 455
22.6.2 答案 455
22.6.3 练习 455
22.7 进一步探索 456
第23章 应用程序调试和优化 457
23.1 在Xcode中调试 457
23.1.1 使用NSLog进行调试 457
23.1.2 创建用于调试的项目 459
23.1.3 设置断点及单步执行代码 460
23.2 使用Instruments监视 469
23.2.1 跟踪应用程序 469
23.2.2 可用的工具 472
23.3 使用Shark分析性能 473
23.3.1 连接到应用程序 473
23.3.2 理解性能分析结果 476
23.4 小结 478
23.5 作业 478
23.5.1 测验 478
23.5.2 答案 479
23.5.3 练习 479
23.6 进一步探索 479
第24章 通过App Store分发应用程序 480
24.1 通过App Store发布应用程序前的准备工作 480
24.1.1 创建图标 481
24.1.2 获取iPhone分发证书 483
24.1.3 配置项目以便分发 485
24.2 提交应用程序以便批准 487
24.2.1 上传应用程序 488
24.2.2 在应用程序中建造商店 490
24.3 推销应用程序 491
24.3.1 使用iTunes Connect监视和管理销售情况 491
24.3.2 利用网站和社交网络 492
24.3.3 更新应用程序 494
24.3.4 调整价格 494
24.4 其他分发方法 495
24.4.1 ad hoc部署 495
24.4.2 企业部署 497
24.5 小结 497
24.6 问与答 497
24.7 作业 498
24.7.1 测验 498
24.7.2 答案 498
24.7.3 练习 498

前言: 两年前Apple公司还未涉足手持计算领域,而现在却在该领域占据了统治地位。iPhone和iPod Touch平台改变了公众对移动计算设备的看法。凭借着功能齐备的应用程序和界面架构,iPhone证明了小屏幕也能成为高效的工作区,并成为用户和开发人员首选的智能手机。
让iPhone如此成功的部分原因是神奇的界面和高效的软件分发方法。设计iPhone操作系统旨在让用户能够使用手指(而不是光笔或键盘)来控制手机,应用程序使用起来自然而有趣,其外观和行为不再像笨拙的桌面应用程序的移植版本。现在就看WindowsMobile的了!
通过App Store,Apple向开发人员提供了一种最佳的数字分发系统。任何年龄和派别的程序员都可将其应用程序提交到App Store,且需要支付的年度开发人员会费不多。在2008年,简单的音效应用程序每天的利润就达数千美元,而诸如KoiPond等游戏销售了数十万份。鉴于iPhone用户群庞大,不管什么内容都能找到合适的用户。
在2009年中期,Apple通过发布iPhoneOS 3.0给iPhone平台添加了众多新功能,还发布了iPhone 3GS平台。这种改进给开发人员提供了创建独特而充满创意的游戏、实用程序和应用程序所需的工具。
本书旨在向新一代开发人员介绍iPhone开发,以循序渐进的方式提高他们的技能。读者只需通过24个课时的学习,就能掌握所有基本知识——从安装开发工具、向Apple注册到将应用程序提交到App Store。
谁能成为iPhone开发人员
只要有学习兴趣、有时间探索并实践Apple开发工具并拥有一台Intel Macintosh计算机,便可开始iPhone开发了。
学习开发iPhone应用程序并不能一蹴而就,但只要花时间多加练习,只需几天便能开发应用程序。在Apple开发工具上花费的时间越多,创建出激动人心的应用程序的可能性就越大。
在iPhone应用程序开发中,要以创建自己想用的软件为宗旨,而不是创建你认为其他人想用的软件。如果只想着一夜暴富,你很可能会失望。虽然其空间很大,但App Store中争夺销售排行榜的竞争非常激烈。然而,如果将重点放在创建有用而独特的应用程序上,你的劳动成果得到用户赏识的可能性将大得多。
本书适合的读者
本书是为从未进行iPhone开发但使用过Macintosh平台的读者编写的,读者不需要有Objective-C、Cocoa和Apple开发工具方面的任何经验。当然,如果你有一定的开发经验,将更容易掌握这些工具和技术,但作者假定读者以前没有从事过编码工作。
虽然如此,但对读者还是有一定的要求。具体地说,读者必须愿意花时间学习。如果渎者只是阅读每章的内容,而不完成其中的项目,很可能会错过一些重要概念。另外,读者还需花时间阅读Apple开发文档并研究本书介绍的主题。有关iPhone开发的信息浩如烟海,而本书的篇幅有限。本书为你进行自我探索打下了坚实的基础。
本书的内容
本书是基于iPhone OS 3.0编写的,其中的大部分内容都适用于所有iPhone OS版本,但也介绍了iPhone OS 3.0新增的一些功能,如辅助功能、A/V库、地图集成等。
不足的是,本书并非完整的iPhone应用程序编程接口(API)参考手册,因为本书的篇幅无法满足有些主题的需求;所幸的是,你将在学习第1章内容时载的免费工具中包含Apple开发文档。很多章都包含名为“进一步探索”的一节,这些内容为你学习其他感兴趣的主题提供了指南。这里需要重申的是,探索精神是成功的iPhone开发人员必须具备的重要品质。
涉及编码的每章都有配套的项目文件,其中包含编译并测试示例所需的一切;但更佳的做法是根据书中的介绍自己创建应用程序。请务必从本书的配套网站http://iphonein24hours.com下载项目文件。
本书使用的约定
·本书使用了一些约定,让读者能够充分利用和参考书中的信息。需要你在代码中输入的内容用粗体表示。
·菜单选项用一分开。例如,指示读者打开菜单File并选择菜单项New Project时,表示为“选择菜单File→New Project”。
·书中列出的有些语句过长,一行容纳不下。在这种情况下,将在合理的地方换行;但有时将使用续行字符指出下一行是当前语句的一部分。