具体描述
《iPad应用开发实战》由苹果(美国)公司资深iPhone/iPad应用开发专家亲自执笔,Lordhong和沈卓立等资深iOS/Android应用开发专家联袂推荐,国内著名的Apple开发者社区CocoaChina联合策划,权威性毋庸置疑。
《iPad应用开发实战》内容系统而全面,详尽地讲解了iPad开发相关的知识,所有新功能和新特性一览无余;实战性强,不仅配有大量精心设计的小案例,而且还有一个贯穿全书的大案例。本书不仅能满足你全面而系统地学习iPad开发理论知识的需求,还能满足你需要充分实践的需求。
全书一共分为18章,首先介绍了开发iPad应用必备的常识和工具,并给出了一个简单的示例;然后详细地讲解了内存管理、视图和视图控制器、键盘输入和自定义键盘、绘图、触摸事件与手势识别、动画、多媒体播放、容器类、文件系统、同时性编程与定时器、cocos2d基础、连接设备、加速度传感器、地图与链接服务器、Objective-C与XCode进阶知识等核心内容;最后介绍了如何申请iPad应用的开发证书,以及以作者的亲身经历和经验讲述了如何更好地营销和推广自己的应用。
无论你是有丰富经验的iPhone应用开发者,还是略有经验的iPad应用开发者,抑或是只有Objective-C基础但毫无经验的开发者,本书都非常适合你,它是为所有iPad应用开发经验还不太丰富的读者准备的。
作者简介
李晨,资深iOS开发工程师,现就任于苹果(美国)公司,负责iPhone/iPad相关应用的开发,经验极其丰富。在iPhone发布初期即看好移动应用开发的前景,随即转向iOS开发平台,并独立发布了多款热销的iPhone应用,在APP Store上创下佳绩。随后,在iPad面世的第一时间内又开发了iPad相关的应用,而且也取得了不错的销售成绩,积累了大量实战经验。从学生时代开始,他就一直在为Boston Scientific和Vobile等世界知名的企业做开发,项目涉及医疗仪器和移动广告平台等领域。他亲手创办了密歇根理工大学iPhone开发俱乐部,将很多学生带入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
· · · · · · (收起)
读后感
用户评价
这本书的深度无疑是令人信服的,作者对底层API的理解力非同一般。比如,在描述通知中心(Notification Center)的工作原理时,作者详细对比了它与GCD(Grand Central Dispatch)在线程调度上的区别,并提供了一个场景——当应用进入后台时,哪些通知应该被立即处理,哪些可以被延迟,作者给出的建议非常谨慎且贴合系统资源限制。然而,这种“深”也带来了另一个问题:对初级读者的友好度不高。书中很多重要的概念,比如“Run Loop”的模式切换,或者“Operation Queue”中的依赖关系设置,作者通常只做简要的定义,然后就直接跳跃到复杂的代码示例中去展示如何利用这些特性来解决一个高并发问题。对于那些刚刚接触iOS开发,还在为理解闭包(Closure)的捕获列表而头疼的读者来说,直接面对这些“核弹级”的概念,很容易产生挫败感。如果能在关键的复杂概念后,增加一个“新手简易模式”的解释,用更生活化的比喻来搭建初步的认知框架,或许能让这本书的受众面更广,而不仅仅局限于已经有一定基础,想寻求进阶突破的开发者。
我花了一个周末的时间,按照书中的步骤搭建了一个基于Metal框架的简单图形渲染器,这个章节是我购买这本书的主要驱动力之一。作者对Metal API的结构梳理得井井有条,从Command Queue到Command Buffer的创建流程,讲解得清晰明了,代码注释几乎完美地对应了官方文档的术语,这使得跨语言的理解障碍降到了最低。然而,在涉及到与SwiftUI视图的实时交互集成时,我遇到了一个棘手的问题:如何在Metal渲染循环结束后,高效地将渲染结果回传到主线程并更新一个SwiftUI的`Canvas`视图,且不引起界面卡顿。书中的解决方案是使用了一个基于`DispatchGroup`的同步机制,但这在我的测试中,偶有极短的延迟,尤其是在高帧率需求下。我本以为作者会提供一个关于异步渲染上下文切换的最佳实践,也许是利用`MetalView`的底层`CALayer`特性进行更深度的集成优化。结果是,这个环节被一带而过,留下了很多需要读者自己去Stack Overflow上寻找答案的空白。这让我感觉到,这本书虽然涵盖了“前沿”技术(如Metal),但在整合这些前沿技术与当前主流UI框架(如SwiftUI)时的工程化经验分享上,显得不够圆满和深入。
阅读体验上,这本书的排版风格非常“硬核”,大量使用了等宽字体来展示代码块,这对于需要精确复制粘贴的程序员来说是极大的便利,代码块的缩进和高亮做得非常到位,几乎没有出现过让人费解的断行或者符号丢失的问题,这体现了出版方对技术书籍制作的专业态度。不过,在章节之间的逻辑衔接上,我个人觉得略显跳跃。举个例子,在讲解完网络请求的最佳实践后,下一章立刻转向了Core Animation的性能优化,两者之间似乎缺少一个缓冲或者过渡章节来解释,为什么在处理完数据流之后,我们要立刻关注图形渲染的帧率问题。这种知识点的密集轰炸,对于需要逐步消化的初学者来说,可能会造成一定的认知负荷。我尤其期待书中能有一章专门讨论“第三方库的选择与治理”,比如如何评估一个开源库的维护状态、社区活跃度,以及如何在其引入项目中时,做好版本锁定和依赖注入的隔离工作。这类工程实践的经验,往往比单纯的技术语法更能在实际工作中节省大量排错时间,然而书中对此的着墨极少,更多的是展示如何“手写”底层逻辑,这在现代开发环境中,可能与实际操作的重心有所偏移。
我对这本书的期望值是,它能像一位经验丰富的老鸟带着我这个新手在真实的项目现场摸爬滚打,告诉我哪些是“坑”,哪些是“捷径”。特别是对于App Store的审核标准和发布流程,我希望能得到一些不为人知的“潜规则”或者高效的打包技巧。书中关于SwiftUI声明式语法的介绍,初看之下确实令人眼前一亮,作者用极其优雅的篇幅勾勒出了声明式UI的未来蓝图,什么`State`, `Binding`, `ObservableObject`的嵌套关系讲解得非常清晰,甚至还贴心地用流程图展示了数据流向。但是,当我尝试将这些知识点应用到我自己的项目中——一个需要复杂手势交互和自定义视图过渡的场景时,书中提供的所有示例都显得过于简单和静态了。比如,书中提到如何实现一个下拉刷新控件,给出的方案是基于`UIScrollViewDelegate`的传统方案,并在上面套了一个SwiftUI的`VStack`,这种“新瓶装旧酒”的混合编程方式虽然可行,却暴露了当前框架在处理复杂原生集成时的局限性,而作者对此的讨论却戛然而止,没有深入探讨如何用纯SwiftUI的方式去优雅地解决这个问题,或者至少提供一个官方推荐的替代方案。这让我感觉这本书的“实战”部分,似乎停在了SwiftUI刚刚成熟的那一刻,后续框架的快速迭代带来的新挑战和新解决方案,尚未能完全被整合进来。
这本书的封面设计简直是工业美学的典范,那种磨砂质感的深蓝色调,配上简洁的银色字体,握在手里就有一种专业人士的仪式感。我当初买它,是冲着书名里“实战”二字去的,期待能看到一些硬核的、能立刻上手解决实际问题的代码片段和架构设计思路。然而,翻开第一章,我发现内容更多地聚焦在了Swift语言的底层内存管理机制和ARC(自动引用计数)的深度剖析上,这部分内容固然重要,对于理解高性能应用背后的原理至关重要,但对于一个急于构建一个功能完备的原型应用(比如一个待办事项清单或者一个简单的社交媒体克隆)的开发者来说,它显得过于学术化了。作者花了大量的篇幅来解释`weak`, `unowned`, `strong`引用在不同场景下的细微差别,甚至引用了LLVM编译器的部分源码注释来佐证观点。我理解这是为了打下坚实的基础,但对于我这个更偏向于快速迭代、关注UI/UX实现的开发者而言,这就像是想学开车,结果先被拉去研究了内燃机的每一个活塞行程。书中后半部分提到了一些关于Core Data与Realm的性能对比测试,数据图表非常详尽,图例和坐标轴的标注都无可挑剔,看得出作者在数据收集和呈现上下了苦功,但对比的场景设置得过于理想化,并没有涵盖我们在处理大量离线同步和冲突解决时的真实痛点。整体来说,它更像是一本优秀的理论参考手册,而不是一本“从零到一”的实战指南。
真心很一般,中国人写的书就是不够深入浅出,没有从基础开始讲起
凑合看吧,国人写的书总是逃脱不了语言冗余,表达不清,前后渐进设置不合理的问题,内容还行吧,有干货,就是读着累
当年入门用书
真心很一般,中国人写的书就是不够深入浅出,没有从基础开始讲起
此书今日读完,内容涉及较广,例子不错,但是太复杂,技术细节讲解不够细致,只是大概介绍了一下。