《iOS应用开发攻略》试读样章

阅读更多
内容简介:
    本书涵盖了应用开发及构建优雅解决方案的必备知识,包括编写通用的启动画面和嵌入式Web浏览器;构建复杂表视图;使应用或游戏活灵活现的填充、变换和动画;通过手势、转换和自定义控件改善UI;用基本技术知识避免代码重复,解决复杂问题(如上传大文件到Web服务器)等。

    《iOS应用开发攻略》试读样章_第1张图片

作者简介:

Matt Drance
前苹果公司布道师。在苹果公司工作了8年,然后创立了一家iOS开发与咨询公司Bookhouse Software。他还为Pragmatic Studio培训iOS开发者,在Apple Outsider(appleoutsider.com)上分享对行业的见解。除了编码、写作、教学以及履行超级奶爸的义务之外,Matt还喜欢在北加州滑雪和赛车。


Paul Warren
图形系统专家程序员。上世纪80年代初,Paul Warren就爱上了计算机图形学,并且喜欢在他的Commodore 64上编程。经过20年的汇编语言编程生涯,他又找回了初恋:开发有趣的图形系统。Paul的iOS开发与咨询公司Primitive Dog专门制作二维动画和定制控件。除了痴迷于让各种东西在屏幕上翻转飞舞,他其他所有时间都用来陪伴两个可爱的女儿。

译者简介:
刘威
2001年毕业于中国科学院研究生院。热爱计算机科学,喜欢编程,尤其喜欢写程序解决实际问题。从2000年起从事软件开发工作,最近几年一直专注于手机软件开发,目前从事Android和iOS软件开发。曾翻译出版《Objective-C编程之道:iOS设计模式解析》一书。新浪微博:@刘威-LiuWei。

本书赞誉:

如果只能选择一位老师学习最好的iOS开发方法,我会选择Matt Drance。本书也没让我失望,因为我立刻就用上了几招。我希望尽快用到更多招数,尤其是Paul的好玩的图形与动画技法!

——Brent Simmons,NetNewsWire的开发人员

本书对一系列“他们是怎么做的?”问题做了很好的解答。对于想在自己的苹果应用中点缀亮点的人来说,这是一本必读的书。

——Justin Williams,Second Gear主程序员

无论对初学者还是有经验的开发人员来说,这都是一本很棒的书。书中充满了极为有用的最新示例程序,示范了如何往项目中添加专业级的功能,而且讲解精彩,代码给力。

——Michael Hay,Black Pixel公司高级开发人员

强烈推荐这本书!书中介绍的很多技巧与窍门别处都难以找到。我宁愿从书架上(或iBooks中)取出一本书,来研习曾经看到过的那段代码,书上的代码是不会突然消失的;而去网上找的话,说不定早被网站删掉了。这本书肯定是我要从书架上取出的一本。

——Marcus S. Zarra,Zarra Studios公司所有人

即使你在自己的苹果应用中只用到了书中的一招,那么买这本书也值了。我很快就发现书中马上能用的招数简直太多了。如果你靠写iOS应用来挣钱,而且惜时如金,那么时刻要把书放在触手可及之处,否则你会抓狂的!

——Mike Clark,Clarkware创始人

引言:

作为程序员,我们的目标是解决问题。问题有时困难有时容易,有时又充满乐趣。也许它们算不上我们常说的“问题”,但是需要我们来找到解决办法。

作为作者,我们的目标是帮助读者更好、更快地解决问题(最好是先保证好,然后再保证快)。于是我们决定写这本攻略书,重点讨论一组我们要直接面对的具体任务与问题,而不是泛泛地讨论编程问题。

这不是说这本书不会教大家东西。攻略书的好处在于,能针对读者不易自己找到办法的问题提供可信赖的解决方案。缺点在于,它会让你忍不住把解决方案直接复制粘贴到自己的项目中,而不去花时间理解这些解决方案。能减少编码量从而节省时间总是件好事,但是思考并弄懂时间是如何节省下来的,今后怎样才能节省更多时间,同样非常重要。

如果你熟悉iOS SDK,打算提高app的质量与效率,就请阅读本书。本书不会教你如何编写app,但我们希望帮助你把app开发得更好。如果你是一名高级开发人员,那么可能会发现采用书中的某些复杂技巧能帮你节省时间,避免麻烦。

大部分攻略都是本着保证最大可复用性的原则来编写的。我们并不只是示范可以解决问题的一种技巧或一段代码。相反,我们着眼于创建读者可以集成到自己的iPad或iPhone app中的解决方案。有些方案可能无需改动就能应用到你的项目中,但你尽可以把本书当做一般的“烹饪书”来用。按照食谱烹调时,我们可以根据喜好及需要增减配料。开发自己的app和项目时也是如此:你尽可以扩充或修改本书中各攻略所附的项目,使之满足自己的特定需要。

书中的攻略能从头到尾完整地教你如何完成任务,但是我们希望这些攻略可以激发你去思考在什么情况下、为什么要选择某种方案。通常会有多种选择,尤其是在像Cocoa这样的环境下。有多种选择,就会有多种做法。为保持一致,我们对本书中的某些模式与做法预先做了一些约定。这些技巧中有些你可能比较熟悉,有些技巧的用法你可能没有想到,有些对你来说可能是全新的技巧。不管怎样,我们先对这些约定做个说明,以免读者觉得意外。

格式与语法

本书中有些代码片段为了排版不得不采用特殊的格式。Objective-C这样啰嗦的语言在有字数限制的情况下无法保证效果,所以有时某些代码会显得很特别。读者可能会遇到简短的方法名或变量名、看起来过多的临时变量,还有奇怪的换行。我们力图保留Cocoa惯例的“精神”,但有几处为了排版只好妥协。如果编码风格偶尔突然改变,请不要奇怪。

范畴

相当一部分攻略为了完成任务而使用了对苹果公司标准类的范畴。范畴是Objective-C编程语言的一项异乎强大的功能,并常让新手Cocoa程序员望而却步。范畴也能够轻易破坏命名空间,在复杂的类层次结构中引入或屏蔽令人意想不到的行为。我们不必害怕它,但要重视它。考虑范畴的时候,需要注意以下几点。

想一想是否子类或者新的类会更加合适。如苹果公司的《Objective-C编程语言》手册中所述,“不能用范畴替代子类”。

扩展不归自己掌管的类(比如UIApplication)时,一定要给范畴方法加前缀,以避免与将来API的名字发生冲突。本书中,新的范畴方法都使用前缀prp_。

决不能在范畴中重载已有的方法,比如-drawRect。这样会屏蔽源类中的实现,从而破坏继承树。

合成的实例变量

我们很少在本书的头文件或例子中声明实例变量。我们全部采用Objective-C 2.0的属性,利用运行库先进的实例变量合成功能来声明类存储。这样做能减少输入与阅读的代码量,让我们可以专注于攻略本身。我们在本书攻略35会作进一步解释。

私有类扩展

私有类扩展是Objective-C的另一项比较新的功能,在本书中经常使用。私有扩展可以减少头文件中的干扰而提高可读性,而且为代码的利用者或维护者提供了更为清晰的描述。在攻略35中,我们向不熟悉私有类扩展或实例变量合成的读者介绍了这两种技术。

-dealloc中的清理工作

在-dealloc中,除了释放所有相关实例变量之外,我们的例子还把它们设为nil。这一做法在Cocoa程序员中争议较大,争论的双方各有道理。本书无意参与这场争论:我们把实例变量设为nil,但读者不必非得这样做。如果读者不喜欢-dealloc中的nil,大可不必写到自己的代码中。

块与委托

块是在Mac OS X雪豹与iOS 4.0中新添加到C和Objective-C中的一项功能。因为这项功能还比较新,所以对于何时使用块、何时使用委托的争论还在继续中。本书中我们在觉得合适的时候两者同时使用。读者可以随意向使用委托的攻略中添加块,或者反过来也行。我们的最终目的是帮助读者找到最简单、最自然的解决方案。

最重要的是,本书旨在减少读者代码的复杂性与重复。不求速战速决地解决一个问题,而是选择长期有效的解决方案。我们希望本书的这些思想会在iOS开发道路上对你有所帮助。

网上资源

本书有自己的网页,http://pragprog.com/titles/cdirec。在这里读者可以找到有关本书的更多信息,并通过以下方式进行参与:

访问书中所有示例程序的完整源代码;
参加讨论组,与其他读者、iOS开发者和作者进行交流;
报告勘误,包括对内容的建议和提交排印错误,帮助改进本书。

前言:

对开发者来说,iOS是个神奇的平台。它那不可思议的触摸屏和交互模式,为应用程序打开了全新的篇章。已经有卓越的开发人员开发出了几年前还无法想象的软件。iPhone、iPod Touch和iPad的便携性意味着我们可以将其随身携带,而且其不错的电池待机时间意味着我们可以持续使用。显而易见,iOS指明了未来的方向(我只能对我那台2007年的MacBook Pro装的雪豹操作系统说声抱歉,我开发软件及处理照片时经常会用到它)。显然计算技术已经改变,而且不会再回到2005年的方式。

这令人兴奋。谁不想为这些神奇的设备开发软件呢?

另一方面,实际上我们开始学习如何为iOS及其基于触控的框架开发软件才只有短短的几年时间。当然,读者中有些人一直从事Mac OS X的软件开发,相比大多数从其他平台转而开发iOS的开发人员,你们已领先一步。但是,不要误会。不管你背景如何,在编写iOS的程序时,我们都是处于陌生的领域。尽管我在十几年前就开始编写Cocoa应用程序,并且写了很多有关Mac OS X开发的书和文章,但我在iOS的开发中仍然遇到不少头疼的事,需要在Xcode中埋头查阅其文档。需要弄懂的东西太多,包括如何创建完美的启动画面,如何最有效地用表格与滚动视图实现我们的目标,如何访问新兴的社交应用所使用的众多网络服务,以及如何利用iOS的运行库而不是与之对抗。

很幸运,我们不必自己解决所有这些问题。Matt和Paul(本书的作者)已经在这本攻略书中收集了一系列实例,并且收录了最新的iOS软件开发的最佳做法。结果就是为我们贡献了一系列了不起的、针对目标问题的具体解决方案,我们可以在需要时尽情查阅。

但不止如此。尽管本书由一些完全自成体系的独立章节组成,但读完全书可以让我们对Matt和Paul如何施展其技艺大有领悟。当我阅读本书初稿时,那种感觉就像在观赏我喜爱的厨师现场烹饪美食,我可以向他们学习如何处理手头的工作,甚至包括如何处理我本以为自己已经掌握的简单任务。

所以,且搬把椅子坐下来,跟我最喜爱的两位iOS开发者学上一手!然后,放手去开发几年前你还可望不可及的那些软件吧!

James Duncan Davidson

2011年4月

目录


目  录
第1章  UI攻略  1
攻略1  添加基本的启动画面切换  1
攻略2  让启动画面的切换更有吸引力  7
攻略3  为定制的通知视图添加动画  12
攻略4  创建可重用的开关按钮  15
攻略5  形成带彩色纹理的圆角视图  19
攻略6  组装可重用的网页视图  22
攻略7  定制滑动条与进度条  25
攻略8  打造自己的手势识别器  27
攻略9  创建独立的警告视图  30
攻略10  表示带属性字符串的标签  35
攻略11  滚动无止境的专辑封面墙  39
攻略12  从专辑封面墙播放乐曲  42
攻略13  享受自动滚动的文本视图  47
攻略14  创建个性化的数值控件  50
第2章  表格与滚动视图攻略  56
攻略15  简化表格单元格的生成  56
攻略16  在Nib中使用智能表格单元格  59
攻略17  定位单元格子视图  63
攻略18  组织复杂的表格视图  65
攻略19  生成双色表格视图  70
攻略20  给表格视图添加边框阴影  73
攻略21  在滚动视图中使用静态内容  79
攻略22  创建旋转翻页的滚动视图  82
第3章  绘图攻略  86
攻略23  绘制梯度填充的贝塞尔轨迹  87
攻略24  创建多个动画的动态图像  91
攻略25  创建组合与变换的视图  93
攻略26  对梯度图层实施动画  95
攻略27  重新打造阴影  98
攻略28  显示带动画的视图  100
攻略29  构造简单的发射器  102
攻略30  翻卷页面显示新视图  106
第4章  网络攻略  111
攻略31  改进网络活动指示器  111
攻略32  简化Web服务的连接  113
攻略33  格式化简单的HTTP  POST  116
攻略34  通过HTTP上传文件  120
第5章  运行库攻略  127
攻略35  使用新式的Objective-C类设计  127
攻略36  生成智能调试输出  130
攻略37  设计智能化的User  Defaults访问  133
攻略38  扫描与遍历视图层次结构  136
攻略39  初始化基本数据模型  142
攻略40  在范畴中存储数据  146

你可能感兴趣的:(ios,攻略,应用)