具体描述
准备好进军精彩的Apple移动应用开发世界吧!《iOS 4编程入门经典》这本书展示了如何利用iPhone SDK 4提供的所有功能创建自己的iPhone、iPod Touch和iPad应用程序。你将从中深入学习如何使用Apple的Xcode工具、Objective-C编程语言以及众多用来增强iPhone SDK功能的API。本书十分易于阅读和上手,可帮助你迅速从构建第一个应用程序过渡到开发能够集成动画、手势识别、语音聊天等功能的复杂应用程序。
◆ 基于最新的iPhone SKD,相对上一版新增了对许多新功能的介绍,包括,包括Web服务编程、蓝牙编程、Bonjour编程和Apple推送通知服务等,内容更加全面,技术上更具前沿性
◆ 展示如何使用Xcode工具和iPhone SDK创建自己的iPhone和iPad应用程序
◆ 介绍如何使用Tab Bar、导航和实用模板来加速开发过程
◆ 提供访问内置应用程序(例如照片库和照相机)的方法
◆ 通过访问加速计以创建具有吸引力的应用程序的步骤
◆ 解释如何使用后台服务和执行后台任务
作者简介
Wei-Meng Lee是一名技术专家,并且是Developer Learning Solutions(www.learn2develop.net)的创始人。Developer Learning Solutions是一家技术公司,主要培训最新的Microsoft和Mac OS X技术。Wei-Meng Lee还是Wrox和O’Reilly出版社的知名作者。
Wei-Meng Lee首先在新加坡开展了iPhone编程培训课程,反响良好。他在iPhone/iPad编程培训方面的务实方法使得理解这些主题比阅读Apple提供的图书、教程和文档容易得多。
目录信息
XI
目 录
第Ⅰ部分 入 门
第1章 iOS 4编程快速入门 ························3
1.1 获取iPhone SDK ································ 3
1.2 iPhone SDK的组件 ···························· 5
1.2.1 Xcode ········································· 5
1.2.2 iPhone Simulator ······················· 7
1.2.3 Interface Builder ······················ 10
1.2.4 Instruments ······························ 11
1.3 iPhone OS架构概述 ························· 11
1.4 起步前需要了解的一些信息 ·········· 13
1.4.1 iPhone OS的版本 ···················· 13
1.4.2 在真实设备上进行测试 ········ 14
1.4.3 屏幕分辨率 ····························· 14
1.5 小结 ·················································· 15
第2章 编写第一个“Hello World!”
应用程序 ·········································16
2.1 Xcode快速起步 ······························· 16
2.1.1 使用Interface Builder ·············· 18
2.1.2 编写代码 ································· 22
2.2 定制应用程序图标 ·························· 23
2.3 显示启动画面 ·································· 25
2.4 小结 ·················································· 27
第3章 视图、插座变量与动作 ················28
3.1 插座变量和动作 ······························ 28
3.2 使用视图 ·········································· 34
3.2.1 使用警告视图 ························· 35
3.2.2 使用动作表单 ························· 37
3.2.3 页面控件与图像视图 ············· 39
3.2.4 使用Web视图 ························· 46
3.3 使用代码动态添加视图 ·················· 48
3.4 理解视图层次结构 ·························· 51
3.5 小结 ·················································· 52
第4章 视图控制器 ·····································54
4.1 View-based Application模板 ··········· 54
4.2 Window-based Application模板 ······ 64
4.2.1 以编程的方式添加视图
控制器和视图 ························· 69
4.2.2 创建并连接动作 ····················· 72
4.2.3 切换视图窗口 ························· 75
4.2.4 为视图窗口切换添加动画 ······ 77
4.3 Split View-based Application模板 ······ 79
4.4 Tab Bar Application模板 ················· 96
4.5 小结 ················································ 101
第5章 iPhone和iPad的多平台支持 ······· 103
5.1 方法1:修改设备目标设置··········· 103
5.2 方法2:创建Universal应用程序 ··· 110
5.3 方法3:维护两个代码库 ··············· 116
5.4 选择方法 ········································ 118
5.5 小结 ················································ 119
第6章 键盘输入 ······································ 120
6.1 使用键盘 ········································ 120
6.2 定制输入类型 ································ 121
6.2.1 隐藏键盘 ······························· 122
6.2.2 当视图加载完毕后自动
显示键盘 ······························· 127
6.3 检测键盘是否可见 ························ 127
6.3.1 使用Scroll View ···················· 128
6.3.2 显示键盘时滚动视图 ··········· 131
6.4 小结 ················································ 136
第7章 屏幕旋转 ······································ 138
7.1 响应设备旋转 ································ 138
7.1.1 不同类型的屏幕方向 ··········· 140
7.1.2 处理旋转 ······························· 141
iOS 4编程入门经典
XII
7.2 以编程的方式旋转屏幕 ················ 145
7.2.1 在运行期间旋转屏幕 ··········· 145
7.2.2 当加载时在指定的方向
上显示Vi ew窗口 ··············· 146
7.3 小结 ················································ 146
第Ⅱ部分 显示和持久化数据
第8章 使用表视图 ·································· 151
8.1 简单的表视图 ································ 151
8.1.1 添加Header与Footer ············· 156
8.1.2 添加图像 ······························· 157
8.1.3 显示所选项 ··························· 158
8.1.4 缩进 ······································· 160
8.1.5 修改行高 ······························· 161
8.2 在Navigation-based Application中
使用表视图 ···································· 162
8.3 分节显示 ········································ 162
8.3.1 添加索引 ······························· 169
8.3.2 添加搜索功能 ······················· 169
8.3.3 详情显示与选取标记 ··········· 180
8.3.4 导航到另外一个View窗口 ······ 181
8.4 小结 ················································ 187
第9章 应用程序首选项 ························· 188
9.1 创建应用程序首选项 ···················· 188
9.2 以编程的方式访问设置值 ············ 194
9.2.1 加载设置值 ··························· 198
9.2.2 重置首选项设置值 ··············· 200
9.2.3 保存设置值 ··························· 201
9.3 小结 ················································ 202
第10章 文件处理 ··································· 204
10.1 理解应用程序文件夹 ················· 204
10.1.1 使用Documents与Library
文件夹 ······························· 205
10.1.2 将文件存储到临时
文件夹中 ··························· 209
10.2 使用属性列表 ····························· 209
10.3 复制打包的资源 ························· 216
10.4 小结 ············································· 217
第11章 使用SQLite3进行数据库
存储 ············································ 219
11.1 使用SQLite3 ································ 219
11.2 创建并打开数据库 ····················· 221
11.2.1 检查创建的数据库 ··········· 223
11.2.2 创建表 ······························· 223
11.2.3 插入记录 ··························· 224
11.2.4 绑定变量 ··························· 226
11.2.5 检索记录 ··························· 228
11.3 在应用程序中打包SQLite
数据库 ········································· 230
11.4 小结 ············································· 232
第Ⅲ部分 iOS 4高级编程技术
第12章 简单动画和视频播放 ·············· 235
12.1 使用NSTimer类 ·························· 235
12.2 变换视图 ····································· 241
12.2.1 平移 ··································· 242
12.2.2 旋转 ··································· 244
12.2.3 缩放 ··································· 246
12.3 为一系列图像增加动画效果 ······ 246
12.4 在iPhone中播放视频 ·················· 248
12.5 小结 ············································· 251
第13章 访问内置应用程序 ··················· 253
13.1 发送e-mail ··································· 253
13.1.1 调用Safari ························· 258
13.1.2 调用拨号程序 ··················· 259
13.1.3 调用SMS ··························· 259
13.2 访问照相机与照片库 ················· 261
13.2.1 访问照片库 ······················· 261
13.2.2 访问照相机 ······················· 270
13.3 小结 ············································· 273
第14章 手势识别 ··································· 275
14.1 识别手势 ····································· 275
14.1.1 轻拍 ··································· 276
14.1.2 捏拉 ··································· 280
14.1.3 旋转 ··································· 282
14.1.4 摇动或拖曳 ······················· 285
目 录
XIII
14.1.5 滑动 ··································· 287
14.1.6 长按 ··································· 292
14.2 检测触摸 ····································· 295
14.2.1 检测单点触摸 ··················· 296
14.2.2 检测多点触摸 ··················· 300
14.2.3 实现捏拉手势 ··················· 302
14.2.4 实现拖曳手势 ··················· 308
14.3 小结 ············································· 310
第15章 访问加速计 ······························· 312
15.1 使用加速计 ································· 312
15.2 可视化加速计数据 ····················· 315
15.3 使用Shake API检测摇动 ············ 318
15.4 小结 ············································· 324
第Ⅳ部分 网络编程技术
第16章 Web 服务 ·································· 327
16.1 使用XML Web服务的基础
知识 ············································· 327
16.1.1 使用SOAP 1.1 ·················· 329
16.1.2 使用SOAP 1.2 ·················· 330
16.2 在iPhone应用程序中使用Web
服务 ············································· 331
16.3 解析XML响应 ···························· 337
16.4 小结 ············································· 341
第17章 蓝牙编程 ··································· 343
17.1 使用Game Kit框架 ······················ 343
17.1.1 搜索对等设备 ··················· 343
17.1.2 发送和接收数据 ··············· 350
17.2 实现语音聊天 ····························· 352
17.3 小结 ············································· 359
第18章 Bonjour编程 ····························· 361
18.1 创建应用程序 ····························· 361
18.2 发布服务 ····································· 362
18.3 搜索服务 ····································· 365
18.4 小结 ············································· 371
第19章 Apple推送通知服务 ················ 373
19.1 生成证书请求 ····························· 374
19.2 生成开发证书 ····························· 375
19.3 创建应用程序ID ························· 378
19.3.1 针对推送通知
配置App ID······················· 380
19.3.2 创建Provisioning Profile ··· 382
19.3.3 在设备上安装
Provisioning Profile ·········· 384
19.4 创建iPhone应用程序 ·················· 384
19.5 创建推送通知提供者 ················· 388
19.6 小结 ············································· 391
第20章 显示地图 ··································· 392
20.1 使用Map Kit框架显示地图和
监视变化 ····································· 392
20.2 获得位置数据 ····························· 397
20.2.1 使用地图显示位置 ··········· 402
20.2.2 获取方向信息 ··················· 405
20.2.3 旋转地图 ··························· 409
20.2.4 显示注记 ··························· 414
20.2.5 逆地理编码 ······················· 418
20.2.6 显示箭头按钮 ··················· 422
20.3 小结 ············································· 424
第21章 后台应用程序 ··························· 426
21.1 理解iPhone中的后台执行 ·········· 426
21.1.1 检查不同的应用程序
状态 ··································· 427
21.1.2 禁用后台模式 ··················· 429
21.1.3 检测多任务支持 ··············· 431
21.1.4 在后台跟踪位置 ··············· 431
21.1.5 使位置应用程序更加
节能 ··································· 435
21.2 本地通知 ····································· 437
21.3 小结 ············································· 443
第Ⅴ部分 附 录
附录A 在实际设备上进行测试 ············ 447
A.1 注册iPhone开发人员计划 ··········· 447
A.2 获得设备的UDID ························ 447
iOS 4编程入门经典
XIV
A.3 登录到iPhone Provisioning
Portal ············································· 448
A.4 生成证书 ······································ 449
A.5 注册设备 ······································ 452
A.6 创建应用程序ID ·························· 454
A.7 创建Provisioning Profile ·············· 455
A.8 理解应用程序ID和通配符 ·········· 458
A.9 准备提交到App Store ·················· 461
A.10 小结 ············································ 466
附录B Xcode快速入门 ························· 467
B.1 启动XCODE ································· 467
B.1.1 Xcode支持的项目类型 ······· 467
B.1.2 定制工具栏 ························ 470
B.1.3 代码感知 ···························· 470
B.1.4 运行应用程序 ···················· 471
B.2 调试应用程序 ······························· 471
B.2.1 错误 ···································· 472
B.2.2 警告 ···································· 472
B.2.3 设置断点 ···························· 473
B.2.4 使用NSLog()方法 ·············· 475
B.2.5 文档 ···································· 475
附录C Interface Builder快速入门 ······ 476
C.1 .XIB窗口 ······································· 476
C.2 设计视图 ······································· 477
C.3 Inspector窗口 ································ 478
C.3.1 Attributes Inspector窗口 ··· 478
C.3.2 Connections Inspector
窗口 ····································· 479
C.3.3 Size Inspector窗口 ············· 479
C.3.4 Identity Inspector窗口 ········ 479
C.4 Library窗口 ··································· 479
C.5 插座变量与动作 ··························· 480
C.5.1 创建插座变量与动作 ········ 480
C.5.2 连接-插座变量与动作 ······ 483
附录D Objective-C快速教程 ··············· 487
D.1 指令 ·············································· 487
D.2 类 ·················································· 488
D.2.1 @interface ·························· 488
D.2.2 @implementation ··············· 488
D.2.3 @class ································ 489
D.2.4 类的实例化 ························ 490
D.2.5 字段 ···································· 491
D.2.6 访问权限 ···························· 491
D.2.7 方法 ···································· 492
D.2.8 消息发送(调用方法) ········· 494
D.2.9 属性 ···································· 495
D.2.10 初始化器 ·························· 498
D.3 内存管理 ······································ 500
D.4 协议 ·············································· 506
D.5 选择器 ·········································· 508
D.6 类别 ·············································· 509
· · · · · · (收起)
读后感
用户评价
我花了整整一个周末试图跟上这本书的节奏,但最终的结果却是挫败感爆棚。作者似乎对iOS 4那个时代特有的技术栈有着一种近乎偏执的坚持,全书充斥着大量已经过时或者被更现代范式取代的API和设计哲学。当我尝试将书中的某些“核心”代码片段应用到我自己的一个稍微新一点的项目中时,编译器立马报出了几十个错误。这让我不禁开始怀疑,这本书的价值到底在哪里?是让我去学习如何搭建一个历史博物馆里的软件架构吗?比如,关于数据持久化的章节,对Core Data的使用介绍得过于笼统,更像是一个官方文档的摘要集合,完全没有深入探讨在实际复杂场景下可能遇到的性能瓶颈和调试技巧。对于初学者而言,他们需要的是那种“告诉你怎么做,还告诉你为什么这样做以及这样做可能有什么坑”的经验之谈,而不是这种蜻蜓点水的技术罗列。购买这本书时,我期待的是一部能够引导我踏入现代iOS开发世界的“经典”,结果却像是在考古,费力不讨好。
从一个项目实践的角度来看,这本书的组织结构简直是毫无逻辑可言。它似乎是把一系列零散的教程章节强行缝合在一起,缺乏一个贯穿始终、层层递进的项目案例来巩固所学知识。前几章还在讲View Controller的生命周期,突然间就跳到了网络请求的处理,然后下一章又回过头来讨论Interface Builder的使用,这中间缺乏有效的桥梁和过渡。我记得有一章讲到了手势识别,但讲解的深度仅仅停留在如何识别Tap事件,对于更复杂的拖动手势(Pan Gesture)的处理,寥寥数语带过,连状态管理都没有详细说明。这就导致我学完一个知识点后,感觉自己像是在知识的海洋里捞起了一块块碎片,无法拼凑出一个完整的知识体系。对于渴望快速上手构建应用的读者来说,这种碎片化的学习路径无疑是痛苦的。一本好的入门书,应该像一个经验丰富的导师,一步步带着你搭建起知识的框架,但这本《iOS 4编程入门经典》给我的感觉更像是扔给我一堆工具,让我自己去琢磨怎么造房子。
购买这本书的初衷是想系统性地掌握iOS的开发流程,但遗憾的是,这本书在“工程实践”这一环几乎是空白的。它详细介绍了如何使用UIKit的某些组件,但对于现代App开发中至关重要的版本控制(比如Git的集成)、自动化构建流程(CI/CD的雏形),乃至基本的错误日志收集和调试的最佳实践,都完全没有涉及。这就像是教会了一个人如何用锤子钉钉子,却没告诉他要如何保护好自己的双手,或者如何规划整个房子的蓝图。在iOS 4的时代,虽然这些工具可能不像今天这般普及,但一本自诩为“经典”的入门书,理应具备前瞻性,至少要提供一个将这些零散知识点串联起来的、符合行业标准的开发流程模型。结果,我学完后发现自己只会写一些孤立的小功能模块,一旦需要协作或者发布,完全不知道从何下手。这本书在技术深度上有所欠缺,在工程广度上更是缺失得厉害,实属遗憾。
这本书的语言风格实在是太过学术化和冷漠,缺乏必要的亲和力。作者的遣词造句充满了技术术语的堆砌,仿佛在写一篇博士论文的摘要,而不是面向初学者的教程。例如,在描述内存释放机制时,作者使用了诸如“参照计数溢出现象的潜在风险”这类晦涩的表达,我花费了很长时间才明白,他其实只是想提醒我注意循环引用的问题。如果能用更生活化、更具画面感的比喻来解释这些抽象概念,学习的效率会提高不止一个数量级。我尝试着把它当作一本参考手册来查阅,但很快放弃了,因为它在需要快速定位信息时,结构上的冗余反而成了障碍。真正好的入门读物,应该能让读者在阅读的过程中感受到一种被鼓励、被引导的积极情绪,但这本书带给我的只有压力和一种“我怎么这么笨”的自我怀疑。它更像是写给那些已经有所基础,只是想查阅特定API实现的工程师看的,而不是为真正意义上的“入门者”准备的。
这本书的排版简直是灾难,简直让人怀疑作者是不是对“清晰”这个词有什么误解。我拿到这本《iOS 4编程入门经典》时,首先映入眼帘的就是那密密麻麻的字体和毫无章法的代码块。很多基础概念的解释,本应是循序渐进的,但在这里却像是在跳跃式地蹦跶。比如讲到Delegate模式的时候,作者似乎默认读者已经对Objective-C的内存管理了如指掌,直接就抛出了几个复杂的代码片段,看得我一头雾水。难道入门级别的书籍不应该用更形象的比喻或者更简单的例子来铺垫吗?我不得不频繁地在网上搜索那些书里一笔带过的术语,这极大地打断了我的学习连贯性。更要命的是,书中的插图,简直就是黑白像素块的集合,根本看不出UI组件的实际布局和交互效果,这对于一个视觉学习者来说简直是酷刑。我常常需要自己动手在Xcode里敲出示例代码,然后对着运行结果,才能勉强猜出作者想表达什么。如果不是我对iOS开发实在太感兴趣,真想直接把它扔到一边,换一本更注重阅读体验的书籍。这种体验,更像是翻阅一份未经校对的内部技术文档,而不是一本精心编纂的教材。
例子挺详细的, 就是太浅了
例子挺详细的, 就是太浅了
例子挺详细的, 就是太浅了
例子挺详细的, 就是太浅了
例子挺详细的, 就是太浅了