本书是为中初级iPad/iPhone应用开发者量身打造的,它的内容规划非常全面,全面而系统地讲解了iPad开发必备的基础知识,包括开发前的准备工作、视图和视图控件、外部接口与行为、键盘输入与自定义键盘、绘画、动画、屏幕旋转、手势、加速器与陀螺仪、多媒体、文件处理、文档共享、数据存储、Web服务、蓝牙、地图服务,以及应用的销售技巧,通过本书,开发者能系统性地掌握iPad开发。此外,本书非常注重实战,几乎每一章的每一个知识点都有一个综合性的实战案例,以便于能更好地指导读者实践。
移动领域从来都是硬件为王,但iPhone的出现改变了这一切。苹果公司以优秀的操作系统和大量高质量的第三方应用主宰了整个市场。iPad的出现再一次改变了世界,曾被忽略多年的平板设备第一次变得如此的火热。
全世界都在关注iPad,都在享受着iPad带来的强大功能和丰富的娱乐体验,为iPad应用开发者们孕育了一个极富潜力和充满生机的市场。游戏开发商在短短几个月内就能获得几百万美元的收入,盈利能力大大超过传统的桌面游戏;传统媒体陆续发布iPad应用来开发新的客户,并通过微销售和移动广告来开拓新的市场;Ebay等电子商务公司纷纷在iPad上发布应用,以方便用户随时随地消费,此举让这些公司的销售额大幅度成长;依赖iPad平台的创业型公司如雨后春笋般涌现,其中很多公司都发展得不错;很多个人开发者也在iPad平台上崭露头角,凭借各类新奇的应用获得了比工资高得多的收入。
这是一个处于变革中的时代,桌面应用风光不再,移动领域风起云涌。iPad 2的发布不仅会引起新一轮的平板电脑销售狂潮,而且还会给开发者们带来更多新的机会。在这场变革之中,你是墨守陈规、甘于寂寞,还是勇往直前、创造属于自己的奇迹呢?
国内最大的Apple开发者社区CocoaChina联合策划
资深iOS应用开发专家 (现就职于美国苹果公司) 亲自撰写,权威性毋庸置疑
资深iOS/Android应用开发专家、ChaCha API金奖得主Lordhong和资深iOS应用开发专家沈卓立联袂推荐
以iPad为代表的平板电脑的诞生给无数的行业带来了新的机会,这一点在移动互联网领域和软件开发领域表现得尤为突出。iPad 2的发布再次成为全球关注的焦点,它的进一步普及将会给开发者带来更多的制造创富神话的机会。如何才能把握住这次机会?翻开本书吧!它是目前最全面、最系统地讲解iPad应用开发的图书之一。不容错过!
——CocoaChina(www.cocoachina.com) 国内最大的Apple开发者社区
2010年,iPad一问世便迅速风靡全球,当年的销量占据了全球平板电脑销量的95%以上。2011年,更轻、更薄、更强的iPad 2将继续引领和巩固iPad的统治地位。iPad应用开发将是继iPhone应用开发之后的又一个金矿。本书是首本本土化的面向中文开发者的iPad开发指南,内容全面,实例丰富,既便于大家系统地学习,又便于大家进行实际的操练。还有一点要强调的是,本书的作者是iPhone/iPad应用开发的先驱者和资深人士,目前在苹果(美国)公司工作。强烈推荐!
——Lordhong ChaCha API 大赛金奖得主 / 资深iOS/Android应用开发专家
平板电脑是一个巨大的市场,iPad的出现只是打开了这个市场的大门。以iPad为代表的平板电脑的流行和普及是必然趋势,在这个过程中,应用将发挥决定性作用,应用才是平板电脑的生命源泉。如何才能全面而系统、又快又好地掌握iPad开发?强烈推荐你阅读本书,它不仅详尽地讲解了iPad开发所必备的理论知识,而且包含大量极具实战性的案例。
——沈卓立 资深iOS应用开发专家
作 者 简 介
李 晨 资深iOS开发工程师,现就任于苹果(美国)公司,负责iPhone/iPad相关应用的开发,经验极其丰富。在iPhone发布初期即看好移动应用开发的前景,随即转向iOS开发平台,并独立发布了多款热销的iPhone应用,在App Store上创下佳绩。随后,在iPad面世的第一时间又开发了iPad相关的应用,而且也取得了不错的销售成绩,积累了大量实战经验。从学生时代开始,他就一直在为Boston Scientific和Vobile等世界知名的企业做开发,项目涉及医疗仪器和移动广告平台等领域。他亲手创办了密歇根理工大学iPhone开发俱乐部,将很多学生带入iOS开发的阵营。此外,他在核工程、无线通信和信号处理等领域也有较为深入的研究。
欢迎加入iPad应用开发者的阵营。
如果你已经是一名iPhone应用或者Mac应用的开发者,希望转战iPad应用开发,那么本书能帮助你最快地掌握iPad特有的设计思想和API。如果你没有任何iOS或者Mac OS开发经验,希望从零开始学习iPad应用开发,那么本书对Objective-C语言的介绍以及大量的开发实例将帮助你从理论和实践两个方面迅速入门。
2007年,苹果公司发布了第一代iPhone,立即引发了智能手机产业的革命。
2008年,苹果公司发布了iPhone SDK,允许开发者为iPhone开发应用,并通过App Store进行推广和销售,这引发了移动软件开发的狂潮。
2009年,这是百花齐放的一年。大量的个人开发者、小公司、大公司在开发、销售等领域各显神通,发布了大量的iPhone应用,很多开发者也从中收获颇丰。
2010年,苹果公司发布了iPad,又一次引发了业界的革命—这一次是在平板电脑领域。iPad不仅为市场注入了新的活力,也为开发者带来了新的梦想和新的机遇。
本书就是为这些胸怀梦想、正在寻找机遇的人而写的。它从市场环境、应用内容、软件构架等多方面介绍了iPad的开发思想,从技术的角度介绍了iPad的开发细节,并且通过大量实例诠释如何将iPad应用从构想变成现实,从计划变成收入。
本书内容特色
q 本书中介绍的所有应用均使用Objective-C语言开发实现。Objective-C是iPad、iPhone、Mac应用开发中的主要语言。
q 从语法特性、常用类、常用方法等多角度介绍Objective-C语言。
q 注重iPad特性,强调其与iPhone的不同之处,这样帮助读者从应用设计上更好地贴近iPad。
q 大量的实例,涉及图像处理、娱乐、游戏、文字处理等多个领域。有简单的例子,用于解释简单概念,适合初学者;有复杂的例子,覆盖多个章节,适合进阶读者。
q 介绍了最为实用的控件和API,例如列表视图、分割视图、弹出视图、加速度传感器等,帮助读者掌握在短时间内发布应用所需要的基本技能。
q 开发环境的介绍,帮助读者熟练掌握XCode的开发、调试、快捷键功能,使开发效率成倍提高。
q 关键词中英文对照,让读者能够用母语来理解关键词和概念,也方便读者查询英文资料。
q 对iOS系统和应用生命周期的概述,让开发者能够对应用所运行的环境以及所经历的各个阶段有更深入的了解,从而在应用设计上能够有深思熟虑的计划。
q 强调移动开发和桌面开发的不同之处,尤其是在内存管理和异步方法上,从而帮助读者开发出更适合移动设备的应用,而不是简单的桌面软件的“山寨版”。
q 对App Store市场历史以及市场环境的介绍,让开发者在设计应用时能更加贴近市场,贴近用户。
q 介绍了很多实用的营销技巧,帮助开发者更好地宣传和销售自己的应用,获得更多的收益。
适合的读者与阅读方法
q 有iOS或Mac OS编程经验的开发者:应当阅读本书的每一章,但可以跳过一些Objective-C的语法讲解部分,而专注于学习iPad特有的设计思想和API。同时可以利用大量的实例,迅速进入iPad开发的最佳状态。
q 有C++、Java、QT等面向对象编程经验的开发者:应当阅读本书的每一章,并特别注意Objective-C语法。Objective-C的语法有很多独特之处,内存管理是其中的难点和重点,需要多花时间。另外,移动应用的架构和桌面软件也很不相同,需要注意相关知识点。
q 没有任何编程经验的初学者:应当仔细阅读本书每一章,从简单的例子入手,在例子的基础上进行改动和试验,了解每一处代码的用途;然后开始“临摹”创作,写一个小小的应用,掌握应用的基本架构;之后再继续学习语法、API,循序渐进,掌握iPad开发的基本技能。
q 软件策划与营销人员:可以蜻蜓点水地浏览第2~17章,了解iPad应用可能具有的功能以及硬件性能;然后多多试玩App Store上的优秀应用,学习优秀和新颖的观点;最后应当阅读第1章和第18章,从中了解App Store的历史与现状,以及一些营销策略。
q 创业者:作为一名创业者,需要有较为全面的技能,但也许没有太多时间详细学习每一章。因此,可以略读各个章节,从中得到创意和技术上的启发。另外,应当熟悉每一个应用实例的构架和功能。
源代码下载
为了便于大家实践,本书提供了源代码供大家下载,下面两种下载途径均有效:
q 通过机工新阅读网站(www.cmpreading.com)下载,在网站上找到该书的页面即可。
q 通过我的博客(www.lichen1985.com/iPadCode.html)下载。
联系作者
如果你发现了本书的任何问题或有任何建议给我们,欢迎通过下面的邮件地址与我联系:iPadAppPracticalProgramming@gmail.com
致谢
本书的编写,经历了撰写、审核、修改、复审、再修改、编辑等很多很多轮的改进。这本书的出版是很多人共同努力的结果。
我首先要感谢机械工业出版社华章分社,是公司里每一位老师、编辑的辛勤劳动,使得稿件的质量不断提升,并最终得以出版。其中尤其要感谢杨福川编辑,他一直在坚定地支持着我写作以及相关的一切工作。
我要感谢Cocoa China论坛、密歇根理工大学iPhone开发俱乐部、苹果开发论坛(Apple Developer Forum)以及其他很多iOS开发社区。和众多开发者共同学习、讨论使我受益匪浅,并且在iOS开发的道路上走得越来越远。
我要感谢我的家人和朋友,他们在我写作最为艰苦的时候给我以鼓励,让我坚持下来,并将书稿质量不断提高。
最后,我要感谢苹果公司!这家传奇的公司在2010年发布的iPad为世界带来了全新的移动体验,也为开发者们带来了新的梦想。我还要感谢众多的用户与批评者,他们购买并使用我的应用,不断地给我提出批评和建议,使得我的应用越做越好。
计算机\程序设计
以iPad为代表的平板电脑的诞生给无数的行业带来了新的机会,这一点在移动互联网领域和软件开发领域表现得尤为突出。iPad2的发布再次成为全球关注的焦点,它的进一步普及将会给开发者带来更多的制造创富神话的机会。你如何才能把握住这次机会?翻开本书吧!它是目前最全面、最系统地讲解iPad应用开发的一本书之一。不容错过!
——Cocoachina(www.cocoachina.com) 国内著名的Apple开发者技术社区之一
2010年,iPad一问世便迅速风靡全球,当年的销量占据了全球平板电脑销量的95%以上。2011年,更轻、更薄、更强的iPad 2将继续引领和巩固iPad的统治地位。iPad应用开发将是继iPhone应用开发以后的又一个金矿。本书是第一本本土化的面向中文开发者的iPad开发指南,内容全面,实例丰富,既便于大家系统地学习,又便于大家进行实际的操练。还有一点要强调的是,本书的作者是iPhone/iPad应用开发的先驱者和资深人士,目前在苹果(美国)公司工作。强烈推荐!
——Lordhong 资深iOS/Android应用开发专家/Chacha API 大赛金奖得主
平板电脑是一个巨大的市场,iPad的出现只是打开了这个市场的大门。以ipad为代表的平板电脑的流行和普及是必然趋势,在这个过程中,应用将发挥决定性作用,应用才是平板电脑的生命源泉。如何才能全面而系统、又快又好地掌握ipad开发?强烈推荐你阅读本书,它不仅详尽地讲解了iPad开发所必备的理论知识,而且包含大量极具实战性的案例。
——沈卓立 资深iOS应用开发专家
作者简介
李晨 资深iOS开发工程师,现就任于苹果(美国)公司,负责iPhone/iPad相关应用的开发,经验极其丰富。在iPhone发布初期即看好移动应用开发的前景,随即转向iOS开发平台,并独立发布了多款热销的iPhone应用,在APP Store上创下佳绩。随后,在iPad面世的第一时间内又开发了iPad相关的应用,而且也取得了不错的销售成绩,积累了大量实战经验。从学生时代开始,他就一直在为Boston Scientific和Vobile等世界知名的企业做开发,项目涉及医疗仪器和移动广告平台等领域。他亲手创办了密歇根理工大学iPhone开发俱乐部,将很多学生带入iOS开发的阵营。此外,他在核工程、无线通信和信号处理等领域也有较为深入的研究。
2010年,iPad一问世便迅速风靡全球,当年的销量占据了全球平板电脑销量的95%以上。2011年,更轻、更薄、更强的iPad 2将继续引领和巩固iPad的统治地位。iPad应用开发将是继iPhone应用开发以后的又一个金矿。本书是第一本本土化的面向中文开发者的iPad开发指南,内容全面,实例丰富,既便于大家系统地学习,又便于大家进行实际的操练。还有一点要强调的是,本书的作者是iPhone/iPad应用开发的先驱者和资深人士,目前在苹果(美国)公司工作。强烈推荐!
——Lordhong 资深iOS/Android应用开发专家,Chacha API 大赛金奖得主
以iPad为代表的平板电脑的诞生给无数的行业带来了新的机会,这一点在移动互联网领域和软件开发领域表现得尤为突出。iPad2的发布再次成为全球关注的焦点,它的进一步普及将会给开发者带来更多的制造创富神话的机会。你如何才能把握住这次机会?翻开本书吧!它是目前最全面、最系统地讲解iPad应用开发的一本书之一。不容错过!
——
平板电脑是一个巨大的市场,iPad的出现只是打开了这个市场的大门。以ipad为代表的平板电脑的流行和普及是必然趋势,在这个过程中,应用将发挥决定性作用,应用才是平板电脑的生命源泉。如何才能全面而系统、又快又好地掌握ipad开发?强烈推荐你阅读本书,它不仅详尽地讲解了iPad开发所必备的理论知识,而且包含大量极具实战性的案例。
——沈卓立 资深iOS应用开发专家
李晨 著:暂无简介
前言
第1章 iPad开发入门 / 1
1.1 iPad概览 / 2
1.2 从PC到iPad / 3
1.3 从iPhone到iPad / 4
1.4 iPad开发的必备知识 / 5
1.5 iPad开发的必备工具 / 5
1.6 第一个iPad应用—Hello World / 6
1.6.1 建立工程:HelloWorldMail / 7
1.6.2 工程概览 / 8
1.6.3 添加按钮 / 15
1.6.4 邮件编辑器 / 17
1.7 小结 / 19
第2章 视图和视图控制器 / 20
2.1 视图(UIView) / 21
2.1.1 视图概览 / 21
2.1.2 窗口(UIWindow) / 22
2.1.3 网页视图(UIWebView) / 23
2.2 视图控制器(UIViewController) / 23
2.2.1 视图控制器概览 / 23
2.2.2 导航控制器(UINavigationController) / 24
2.2.3 标签控制器(UITabBarController) / 25
2.3 弹出控制器(UIPopoverController) / 26
2.4 分割视图控制器(UISplitViewController) / 27
2.5 实例:iPad网页导航 / 27
2.5.1 基于分割视图控制器的应用 / 27
2.5.2 网页视图 / 29
2.5.3 表格视图 / 31
2.6 小结 / 34
第3章 内存管理 / 35
3.1 对象所有权、引用计数与释放 / 36
3.2 自动释放与便捷方法 / 38
3.3 访问器方法与属性 / 39
3.4 改变引用计数的特殊情况 / 40
3.5 内存管理总结 / 41
第4章 键盘输入和自定义键盘 / 42
4.1 文本输入与系统键盘 / 43
4.2 自定义键盘之一:替代系统键盘 / 47
4.3 自定义键盘之二:与系统键盘共存 / 50
4.4 自定义键盘之三:修改系统键盘 / 51
4.5 小结 / 55
第5章 绘图 / 56
5.1 iOS概览 / 57
5.2 iOS中的绘图技术 / 58
5.3 Quartz 2D / 59
5.4 贝济埃路径的使用 / 61
5.5 画图实战:绘图板 / 62
5.6 小结 / 74
第6章 容器类的使用 / 76
6.1 数组(NSArray)与可变数组(NSMutableArray) / 77
6.1.1 数组的创建与初始化 / 78
6.1.2 查询数组 / 78
6.1.3 产生新数组 / 79
6.1.4 比较数组 / 79
6.1.5 保存数组 / 79
6.1.6 添加对象(NSMutableArray方法) / 79
6.1.7 移除对象(NSMutableArray方法) / 79
6.1.8 替换对象 / 80
6.2 字典(NSDictionary)与可变字典(NSMutableDictionary) / 80
6.2.1 创建字典 / 80
6.2.2 获取关键字与数值 / 81
6.2.3 保存字典 / 81
6.2.4 添加条目(NSMutableDictionary方法) / 81
6.2.5 移除条目(NSMutableDictionary方法) / 81
6.3 集合(NSSet)与可变集合(NSMutableSet) / 81
6.3.1 创建集合 / 82
6.3.2 读取集合 / 82
6.3.3 比较集合 / 82
6.3.4 添加或移除对象(NSMutableSet方法) / 82
6.3.5 集合操作(NSMutableSet方法) / 83
6.4 容器在拼图游戏中的使用 / 83
6.4.1 拼图游戏的设计 / 83
6.4.2 相关定义 / 84
6.4.3 Piece类与字典 / 87
6.4.4 Puzzle类与字典和数组 / 89
6.5 小结 / 93
第7章 文件系统 / 94
7.1 iOS文件系统概述 / 95
7.2 通过模拟器看应用的包裹 / 96
7.3 文件管理器 / 97
7.4 NSString的路径功能 / 98
7.5 拼图游戏中的文件管理 / 99
7.6 小结 / 107
第8章 绘图进阶 / 108
8.1 屏幕旋转 / 109
8.2 绘制曲线和切割图案 / 111
8.3 高级绘图在拼图游戏中的应用 / 114
8.4 小结 / 122
第9章 触摸事件与手势识别 / 123
9.1 触摸事件、视图结构与响应顺序 / 124
9.2 官方SDK中的手势识别器 / 126
9.3 Photo Jigsaw中对触摸的响应 / 128
9.4 自定义的手势识别器 / 135
9.5 小结 / 136
第10章 同时性编程与定时器 / 137
10.1 同时性编程概述 / 138
10.2 操作队列 / 140
10.3 拼图游戏中的同时性编程 / 142
10.4 定时器及其在拼图游戏中的使用 / 146
10.5 小结 / 148
第11章 动画 / 150
11.1 iOS动画技术概述 / 151
11.2 用图像视图来逐帧显示动画 / 153
11.3 视图的动画技术 / 154
11.4 CogRadio应用 / 156
11.5 CogRadio应用中的动画 / 160
11.6 小结 / 166
第12章 多媒体播放 / 167
12.1 音频播放 / 168
12.1.1 使用系统声音服务来播放音效 / 168
12.1.2 音频播放器 / 169
12.1.3 音乐播放器 / 169
12.2 视频播放 / 171
12.2.1 电影播放器 / 171
12.2.2 在网页视图中嵌入播放 / 174
12.3 CogRadio中的多媒体 / 175
12.4 小结 / 178
第13章 cocos2d开发入门 / 179
13.1 cocos2d简介 / 181
13.1.1 导演 / 181
13.1.2 场景和层 / 182
13.1.3 精灵与动作 / 183
13.2 创建cocos2d工程并添加场景 / 184
13.3 添加按钮、精灵和动作 / 185
13.4 粒子系统 / 187
13.5 小结 / 193
第14章 连接设备 / 195
14.1 游戏工具箱简介 / 196
14.1.1 游戏中心 / 196
14.1.2 点对点连接 / 198
14.1.3 语音聊天 / 198
14.2 实现点对点连接 / 199
14.3 OpenFeint 游戏平台 / 203
14.4 小结 / 209
第15章 加速度传感器 / 210
15.1 加速度传感器概述 / 211
15.2 飞机躲子弹游戏 / 212
15.3 倾斜设备来控制飞机 / 216
15.4 分离重力成分 / 219
15.5 小结 / 221
第16章 地图与连接服务器 / 222
16.1 地图编程概述 / 223
16.2 实战:地图编程 / 224
16.3 与服务器交互 / 227
16.4 实战:与服务器交互 / 229
16.5 小结 / 235
第17章 Objective-C与XCode进阶 / 236
17.1 NSLog扩展 / 237
17.2 范畴的使用 / 239
17.3 读写器的内存管理 / 240
17.4 KVO / 242
17.5 单例 / 243
17.6 运行时的对象查询 / 245
17.7 调试器的巧用 / 246
17.8 XCode快捷键 / 247
17.9 小结 / 249
第18章 iPad应用的开发证书与营销 / 250
18.1 开发证书的获取 / 251
18.2 联机调试 / 254
18.3 应用名字、说明以及图片 / 258
18.4 应用的提交 / 261
18.5 应用的推广 / 262
18.6 应用升级与销售技巧 / 263
18.7 iPad开发的长期策略 / 265
18.8 小结 / 266