iOS包含在iPhone和iPod touch上运行本地应用程序所需的操作系统和技术基础。iPhone跟Mac OS X有共同的基础构架和底层技术。但是iOS是为了满足移动环境而设计的,用户需要和一般的环境下略有区别。现有的Mac OS X开发者会发现很多熟悉的技术,但是他们也会发现很多iOS专有的技术,例如多点触摸和加速度传感器支持。
iOS SDK包含对iPhone 应用程序进行开发,测试,运行,调试,性能调优所需代码,信息和工具。Xcode工具已经升级到可以支持iOS的开发。Xcode不仅提供了基本的代码编辑,编译和调试环境,而且提供了在iPhone和iPod touch设备上测试程序的启动点。Xcode还可以让您在iPhone模拟器内运行您的程序,iPhone模拟器可以在您的Macintosh计算机内模拟基础的iPhone OS环境。
本文对构成iOS的基础特性提供了高层的概述,帮助你了解这个平台。之后,你可以在iPhone开发者中心找到其他的文章可以帮助你迅速的理解创建iPhone应用程序的基础流程。你可以利用这些文章帮助你学习iOS开发。
图1 iOS技术层
构成iOS的底层系统架构以及许多技术,跟构成Mac OS X的很类似。iOS的核心基于构成Mac OS X的Mach核心的一个变种。核心之上是用来实现平台上面应用程序的服务层。图1展示了这些技术层的表层概述。
这些层在你实现自己的代码时给你了选择。例如,核心OS和核心服务层包含了iPhone的基础接口,包括用来访问文件,底层数据类型,Bonjour服务,网络接口等等的接口。这些接口大多数都是基于C语言的,包括核心基础,CFNetwork,SQLite,和访问POSIX线程和UNIX Socket的技术。
当你进入更高的技术层,你会发现一些更表层的技术,它们基于C和基于Objective-C代码混合的接口。例如,媒体层包含支持2D和3D绘图,音频和视频的基础技术。这个层包括基于C的技术,OpenGL ES,Quartz和核心音频。这个层还包括核心动画技术,核心动画是表层的基于Objective-C的动画引擎。
在Cocoa Touch层,大多数的技术都是基于Objective-C的。这个层的框架提供了应用程序的基础架构。例如,基础架构提供了集合,文件管理,网络操作等等的面向对象支持。UIKit框架提供了应用程序的视觉架构,包括了实现窗口,视图,控件,以及这些对象的控制器等等的类结构。这个层的其他的框架,给你访问用户通讯录,照片信息,加速度传感器和设备其他硬件特性的能力。
任何新项目的起点,都是Cocoa Touch层,具体来说就是UIKit框架。当确定采用何种附加技术的时候,强烈建议你首先从框架的表层技术开始,仅在需要的时候使用框架的底层技术。最表层的框架可以轻易的支持你所需要的绝对多数效果的标准系统行为。只有在更高层的框架无法实现你所需要的定制行为的时候,才应该使用底层框架。
为iOS编写代码
iSDK支持创建可以运行在iOS本地的图形化应用程序。你创建的应用程序可以安装在用户的主屏幕上,就像其他的系统应用程序,例如照片,天气和时钟。程序一旦启动,除了操作系统核心和一些底层守护进程以外,你的程序就会成为系统唯一运行的应用程序。运行期间,你的程序会独占整个屏幕,获得用户全部的注意力。当用户按下Home按钮,应用程序就会退出,系统重新显示主屏幕。这种系统的好处是,你可以获得整个系统资源的访问权。你可以从内置的硬件的,例如加速度传感器,摄像头以及图形硬件获得好处,运行你的代码。
因为用户与iPhone和iPod touch设备交互的方式,跟他们与Mac OS X交互的方式完全不同,所以你设计程序的方式也必须完全不同。在iPhone应用程序中,没有用多个文档窗口显示内容的概念。在这里,所有的应用程序数据都显示在一个窗口上。这就造成了新的视图和控件的产生,让你可以用一个整齐的格式展现你的程序数据。此外,许多标准视图和控件和在Mac OS X下的对应对象的行为也有所不同。这些变化大多数对开发者都是透明的,但是有些需要你重构你组织和展现数据的方式。
iOS的事件处理模型与传统的桌面程序也有显著的不同。iOS并不依赖于传统的鼠标和键盘事件,而是引入了触摸事件。一个触摸事件可以随时发生,也可以和一个或几个附加的触摸事件一起发生。触摸可以用于检测跟内容的简单交互,拖放对象等,也可以用于检测复杂的手势或交互行为,例如手指合拢和手指分开的手势(例如在照片程序中,用于放大缩小照片)。
在考虑程序的基本结构之前,你应该先考虑用户实际上如何使用它。iPhone应用程序应该纯粹关注于用户的需求。记住用户希望迅速得到信息,而不想花大量的时间在屏幕的不同层之间寻找。提供简单的布局强调用户更需要的关键信息。对游戏或者其他娱乐程序,你应该考虑用户希望如何和你的程序交互,并在恰当的时候采用,例如速度传感器,摄像头等先进技术。
当你开始开发,你需要使用的框架是基础框架和UIKit框架。这些框架提供了所有iPhone程序所需的关键服务。当你精炼你的程序时,你需要考虑研究系统中的其他框架,看他们可以提供什么样的服务。每个框架的文档都包括了相关概念资料的链接,帮助你理解如何使用这个框架。
使用Xcode提供的内建项目模板,创建运行在iOS上的简单的应用程序是相对简单的,但是如果你想创建一个有点用处,看起来很不错的程序,还是需要你花点时间仔细阅读文档。至少,你需要花点时间通读iPhone开发者中心的其他文章,他们介绍了创建程序需要的工具和流程。
如果你完全不熟悉iOS和Mac OS X,那么对于在这个平台上编写代码来说,很重要的一点是,花点时间理解iOS开发中的基本设计模式和约定。当程序利用了框架提供的所有能力带来的好处的时候,程序就会在iOS下运行的最好。如果你花时间尝试围绕基本的框架行为,你可能会发现创建你自己的程序比简单的学习基本的设计模式困难的多。每个iPhone开发者都需要了解的基本信息详见Cocoa基础指南。该文档包含了Objective-C语言的基础,以及UIKit或者其他系统框架使用的编程约定和设计模式。
一旦你理解了创建iPhone应用程序的基本约定,你可以参考《iOS编程指南》获取更详尽的关于开发流程的信息。本书提供了编写iPhone应用程序的核心概念和基于任务组织的信息,包括如何显示用户介面,处理事件,和从iOS核心特性获得好处的例子。本书还描述了完整的开发流程,并介绍了如何利用Xcode构建和运行应用程序。
除了《iOS编程指南》,你还应该浏览可用的例子代码。iOS提供了大量的具有全部特性的例子,用来展现如何使用现有的技术创建真实世界的应用程序。你可以使用这些例子作为你自己的应用程序的起点,或者你可以观察它们学习如何使用这些特性。