四个月前为
一书试译的前言部分内容:
前言
Apple过往的做法是轮番进行用户关注的和开发者关注的发布,iOS 5带来的好消息全是与开发者相关的。单是Automatic Reference Counting (ARC)的加入就已经值得开发者们做一次升级了,这一次改进,Apple不但消除了iOS应用中导致崩溃的第一大原因,而且代码还变得更易于编写,运行得更快了。就您的应用程序来说,您唯一能做的、也最好要做的一件事情是转向使用ARC,这是自自动释放池之后,Objective-C最被看重的一个功能了。
不过iOS 5也还为开发者增加了不少的功能,从iCloud到自动数据保护都有,操作系统现在接手了更多的刚性问题,让开发者集中精力做好应用的开发。
对于开发者来说,最明显不过的是新的Xcode,其有些功能做了改进,有些仅是变换了做法,有些则会让您发疯。然而,这就是新出的玩法,每个人都要习惯它,本书会帮您理出个头绪来的。
若您已做好了使用最新Apple版本的准备,准备挑战应用编程的极限,那么本书能够帮你达成这一目标。
本书的目标读者
这并非一本入门书,用来学习Objective-C的书和手把手教您使用Interface Builder的书外面多得是,这些都不是本书要做的事情。本书假设您已经有了一些自学的或是课程传授的iOS开发经验,且希望是至少写过大半个应用程序的,即使是尚未提交的应用程序也行。若您打算超越基础的做法,了解一些最佳实践,以及作者在编写实用的应用程序过程中所收获的一些尚未公开的实战经验,那么本书就是为您准备的。
本书也不是仅列出各种做法那么简单,书中有大量的示例代码,但其目标是帮助了解如何设计、编写和维护优秀的iOS应用程序。本书更多的是阐述原理而非仅说明做法,您不仅会了解到许多的设计模式和编写可重用代码的做法,而且还会了解到许多的语法和新的框架。
书中所有例子都是使用Xcode 4来编写的,如果您不熟悉Xcode也无需担心,第2章会助您一臂之力的。
本书涵盖的内容
iOS平台一直在向前发展,故本书中的大部分例子都用到了iOS 5,所有的例子都使用了Automatic Reference Counting。除了少数几个地方之外,本书都不再考虑向后兼容。如果您发行的一些代码年代过久,需要向后兼容,那么您大概也会知道该如何处理。本书关心的是使用所提供的一些最好功能来编写出一些最佳的应用。
本书重点关注iPhone 4和iPad 2,书中的大多数主题都可适用于初版的iPad、iPod touch、iPhone 3GS和Apple TV上。撰写本书之时,iPhone 5和iPad 3尚未发布,但书中提及的每样功能也都应该适用于它们。第12章专门谈论不同平台间的差异处理。
本书内容的组织方式
iOS有着异常丰富一个工具集,从UIKit一类的高层框架到Core Text一类的非常底层的工具都有。一个目标的达成通常会存在多种做法,作为开发者,如何选择最合适的工具来开展工作呢?
本书分别介绍一些日常做法和用于特殊目的做法,这有助于您找出最适合每种问题的解决方案。您将了解每种框架存在的原因,框架之间的关联方式,以及选择这一个而非另一个框架的时机。然后您就会懂得任何最大程度地利用每种框架来解决它所针对的那一类问题。
本书分为四个部分,从最常见的一些工具开始说起,逐步谈到最强大的一些功能。
第1部分:新增功能
若您已对iOS 4已有所了解,那么就把这部分内容当成是iOS 5新功能的一个快速入门。
第1章:新增功能——iOS加入了许多新的功能特性,您可通过这一章快速了解这些可用的功能。
第2章:熟悉Xcode 4——Apple近期重新设计了Xcode的接口,您需要花费些功夫来适应它。本章向您展示了如何最大限度地发挥它的作用。
第2部分:充分利用日常工具
作为一个iOS开发者,想必您已经见识过了各种各样的常用工具,从消息通知到表视图到动画层,这些无不是。但是,您是否已经最大程度地发挥了它们的潜能呢?在这部分内容中,您会从几个资深开发者那里了解到Cocoa开发的一些最佳做法。
第3章:Objective-C的日常工具——若您已准备好要晋级Objective-C下一阶段的开发,本章会向您推介经验丰富的开发者日常使用的一些工具,这些工具增强了应用的设计、可维护性和可重用性。
第4章:松散耦合:Cocoa设计模式——Cocoa依托于一组常见的相容的设计模式,在了解了它们的设计意图之后,您就能够按Apple的行事方式来解决问题了。
第5章:正确使用表视图——表视图有可能是iOS中最复杂也是最常用到的UI元素,它们可让设计变得既简单又优雅,但却会给不理解其工作原理的开发者带来一头雾水。您会在本章中了解到它们的正确用法,以及既觉诸如无限滚动一类的特殊问题的解决方法。
第6章:更好的绘制做法——自定义绘制会吓退许多新入门的开发者,但这却是构建出漂亮而又能快速显示的用户界面的关键环节,在本章中,从UIKit到Core Graphics,您都可找到一些可用的绘制做法,并且了解如何优化这些做法,在保证最佳绘制效果的同时保持一个较快的绘制速度。
第7章:层层剖析:Core Animation——iOS设备有着一些令人赞不绝口的动画设施,它有一个功能强大的GPU和高度优化的Core Animation,您可以构建出一些极具吸引力、能打动人心的、足够直观的界面。在本章中,您将超越基础的做法,去领会动画的一些奥妙。
第8章:处理烦人的错误——您努力去编写完美的代码,但有时事情却不如人意,应用的高下之分就体现在其响应异常的做法上。您在本章中会学习一些常见的错误处理模式,学习如何记录日志、如何让代码在面对异常时更具有弹性。
第3部分:适手的工具
有些工具几乎是在开发每个应用时都要用到的,有些工具则只是时不时地要用一下。在这部分内容中,您了解到的是一些稍有针对性的工具和技术。
第9章:多任务的控制——多任务是许多应用的重要组成部分,您要了解的是在应用运行时如何同时进行多项事情,以及何时应用会转入后台状态。
第10章:REST的最佳实现——基于REST的服务是现代应用的支柱,您在本章中要了解的是iOS中的一些实现REST的最佳做法。
第11章:使用安全服务进行防护——用户安全和隐私在现如今是最重要的,您在这里要了解的是如何使用钥匙串、证书和加密措施来保护应用和用户数据免受入侵者的攻击。
第12章:在多种i字头的平台和设备上运行——随着iPod touch、iPhone、iPad、Apple TV和源源不断的各种新版本的出现,iOS的整体情况也是一年比一年复杂。做到编写一次,随处运行还不够,您的应用还得做到随处都保持最佳运行状态才行。在这一章中您要了解的是如何让应用适应硬件,如何做到充分地利用每一个平台。
第13章:国际化和本地化——虽然目前只是想针对某个市场进行开发,但您可以事先完成一些琐碎工作来方便日后向国际市场的过渡,在不中断当前开发的情况下,还省却了将来的花费和麻烦。
第14章:应用内购买的销售模式——对于许多开发者来说,应用内购买还是个尚未开发的市场。用户喜欢附加的功能,开发者则欢迎额外的收入。您在这一章中了解到的是一些在应用中实现这一重要功能的做法。
第4部分:超越极限
这部分内容就是本书的真正意义所在,您已经学习了一些基础知识,了解了一些日常做法,现在要借用一些最先进的工具来超越这些极限,深入了解iOS的里里外外。
第15章:Cocoa的最大诀窍:键-值观察——许多功能强大的Apple框架都依赖于KVO(Key-Value Observing)获得性能和灵活性,您在这一章中了解到的是如何利用KVO的灵活性和速度,以及学习使其如此透明化的技巧。
第16章:换种想法:块和函数式编程——许多开发者仍着迷于Objective-C中加入的块(block)构造,它们在Apple框架交互方面很有用,同时还开启了编程方面的一些新思路。迎接新的编程风格,在您的下一个项目中尽量利用它的好处。
第17章:支持离线——网络编程不容易,但更难的是提供一种无缝的离线体验。您在本章学习的是如何以最佳方式来缓存数据,并把数据集成到网络引擎中。
第18章:花样繁多的文本布局——从UIKit到Core Text,iOS显示文本的做法那是琳琅满目。在iOS中显示富文本没有什么完美的解决方案,重要的是学会权衡取舍,这样您才能选出合适的做法并加以正确使用。
第19章:构建(核心)基础——若说iOS功能最强大的框架,诸如Core Graphics、Core Animation、Core Text一类的Core框架都是。这些框架都依赖Core Foundation。您在本章中要学会的是如何使用Core Foundation的数据类型,这样就可以利用iOS提供所有功能了。
第20章:深入Objective-C——在做好了揭开Objective-C工作原理的准备之后,您将在本章中要了解的是如何直接使用Objective-C运行时来动态地修改类和方法,如何把Objective-C方法调用派发给C函数调用,以及如何控制系统,以一些奇妙的方式来扩展应用程序。
您可以跳过一些章节,只关注自己最需要的那些主题。每章都是独立的,除了需要用到Code Foundation数据对象(特别是Core Graphics、Core Animation和Core Text))的那些内容之外,在需要这些信息时,这些章节会把您导向第19章“构建(核心)基础”。
本书用到的软件产品和工具
本书中的所有例子都是在Mac OS X 10.7和iOS 5上使用Xcode 4.2来开发的,您需要一个Apple开发账户来获取大部分的工具和文档,还需要一个开发许可来在iOS设备上运行应用。
访问http://developer.apple.com/programs/ios进行账户注册。
书中的大多数例子都可在随同Xcode 4.2一起发行的iOS Simulator上运行,在没有Apple开发许可的情况下可使用iOS Simulator。
Mac OS X 10.6和10.7两个版本上的Xcode 4.2之间有些差别,所有的例子都可以在10.6版本下运行。
Apple文档查找
Apple在其网站和Xcode内部都提供了大量的文档,文档的URL地址会经常发生改变且都很长,本书通过标题而非URL来引用Apple文档。若要查找Xcode中的文档,按下Cmd-Option-?键,或是单击Help | Documentation and API Reference。在Documentation Organizer中,单击Search图标,输入文档的名称,然后从搜索结果中选择文档。参见图1,这是一个搜索Cocoa编码指南的例子。
图1. 搜索Cocoa的编码指南
若要在Apple开发者站点上查找文档,访问developer.apple.com,单击Member Center然后登录。选择iOS Dev Center,然后在Search Developer搜索框中输入文档标题。
一般来说,在线文档和Xcode文档的是相同的,您可以获得针对iOS和Mac两个系统的搜索结果,请确保选择的是iOS版本的内容。许多iOS文档就是它们在Mac中的相应内容的拷贝,偶尔会包含有iOS不支持的函数调用或是常量,本书会指出哪些功能在iOS上是可用的。
源代码
在演练本书中的内容时,您可以选择手工输入所有的代码,或是使用本书附带的源代码文件,本书用到的所有源代码都可在www.wrox.com/go/ptl/ios5programming上下载。例如,您可从下载源码包中找出第18章的文件夹,然后从SimpleLayout项目的CoreTextLabel.m文件中找到下面的这段示例代码:
CoreTextLabel.m (SimpleLayout)
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
CGAffineTransform
transform = CGAffineTransformMakeScale(1, -1);
CGAffineTransformTranslate(transform, 0, -self.bounds.size.height);
self.transform = transform;
self.backgroundColor = [UIColor whiteColor];
}
returnself;
}
书中显示的一些代码段是不全的,仅是用来帮助您理解相应章节的内容,在遇到此类情况时,您应该参考网上提供的代码文件,了解完整的源代码内容。