iPhone OS 包含了处理系统和在iPhone和iPod touch上运行应用的技术。虽然它共用Mac OS X的很多常用功能和底层技术,但是iPhone OS被设计用来适应移动电话环境下的需求,用户的需求稍有不同。曾经的Mac OS X的开发者们会发现很多熟悉的技术,但是他们也会发现iPhone OS上独有的技术,例如多点触控的接口和重力感应支持。

iPhone SDK包含了你开发,测试,运行,调试和在iPhone OS上调整应用程序所需的代码,信息以及工具。Xcode工具已经更新为支持iPhone OS的开发。除了为你的代码提供基本的编辑,编译和调试环境,Xcode还提供了用来在一台iPhone或者iPod设备上测试你的程序的发布点。Xcode同时允许你在iPhone模拟器上运行程序,那是在你的Macintosh电脑上的一个包含了基本的iPhone OS环境的平台。
本文是iPhone OS的基础特性的一个概述,帮助你了解这个平台。在iPhone Dev Center上你可以找到其他的文章,帮助你迅速提高,帮助你理解建立iPhone应用程序的基本过程。你可以通过这些文章来帮助你对iPhone OS的学习。
iPhone OS Technology Layers

在iPhone OS内部,底层的系统架构和很多技术和Mac OS X类似。iPhone OS的核心基于大部分Mac OS X通用的基础Mach核心。这个核心智商的是用来执行平台程序的服务层。
当这一层用来运行你的代码的时候提供给你很多选择。例如,Core OS和Core Services层包含了基本的iPhone OS接口,包括用来处理分拣,基本数据类型,Bonjour服务,网络套接字等。这些接口基本都是C-based的,包括了例如Core Foundation,CFNetwork,SQLite,以及获取POSIX线程以及UNIX套接字等技术。
进入更高的层,你会发现使用混合了C-based和基于Objective-C接口的高级技术。例如,Media层包含了支持2D和3D绘画,音频和视频的基本技术。这一层包括C-based技术OpenGL ES,Quartz和Core Audio。也同事包括了Core Animation,它是高级的基于Objective-C的动画引擎。
在Cocoa Touch层,大部分技术使用Objective-C。这个框架提供了供你的程序使用的基础框架。例如,Foundation框架提供了对collections,文件管理,网络操作等等的面向对象支持。UIKit框架为你的程序提供了虚拟架构,包括对窗口,视图,控制,以及管理这些对象的控制器的类。这一层的其他框架提供了获取用户的联系和照片信息和重力感应信息以及设备的其他硬件特性的能力。
任何新项目的起点都是Cocoa Touch层,个别的是UIKit框架。当决定是用什么附加技术的时候,推荐你从高层的框架开始,只有需要的时候才回到底层框架。高层的框架使支持标准的系统行为变得简单而且让你更容易办到。唯一需要回到底层框架的时候是你需要运行定制的行为在高层中没有提供。
有关iPhone OS技术的更详细的概述,请查看iPhone OS Programming Guide.
为iPhone OS写代码
iPhone SDK支持建立运行在iPhone OS上的面向图形的应用程序。你建立的程序放置在用户的主屏幕上,和其他的系统应用放在一起,例如照片,天气以及时钟。当它开始运行的时候,调用核心和一些底层的守护进程,你的程序就是系统上运行的唯一程序。运行的时候,你的程序占据整个屏幕并且是用户注意力的焦点。当用户按下Home键,你的程序退出并且系统再次显示主屏幕。拥有系统对你自己来说是有利的,因为它使你可以获取底层的系统资源。你可以利用内置硬件例如重力感应器,相机以及图形硬件来仅仅运行你的代码。
由于用户同iPhone以及iPod touch设备交互的方式与用户同Mac OS X交互的方式根本不同,你设计你的程序的方式也必须不一样。在iPhone程序中,没有单独的文档窗口用来显示内容。取而代之的是,所有的程序数据都显示在同一个窗口里。这导致了允许你用有以有序的方式展示你的程序数据的视图和控制的产生。另外,很多标准的视图和控制都和在Mac OS X里有所不同。大部分改变都可以视而不见,但是其中的一些也需要你重新考虑你组织和展示数据的方式。
iPhone OS中的时间处理模型也提供了比传统桌面应用更有意义的变化。代替传统的鼠标和键盘事件,iPhone OS采用了触控事件的主意。触控事件可以发生在任何时间并且可以和一个或多个触控事件组合产生。触控可以用来侦测与内容的简单交互,例如选择或拖拽项目,也可以用来侦测复杂的手势和交互动作,例如猛击或者pinch-open和pinch-close手势(用来,例如,在图片程序中用来放大或者缩小)。
除了考虑你的程序的基本结构,你还要考虑用户实际上是怎么使用的。iPhone应用程序可以随时在用户需要的时候被清除或者成为焦点。记住用户急于迅速了解信息而不愿意多花时间在多层屏幕中挖掘。提供简单的布局而且子用户需要的时候高亮显示关键信息很重要。对于游戏和其他娱乐应用,你也要考虑用户可能怎样和你的应用进行交互并且在适当的地方利用像重力感应器和相机。
当你开始开发的时候,初始化用的框架是Foundation和UIKit框架。这些框架提供了所有iPhone应用的关键服务。改进你的应用的时候,你应该研究一下看看系统里的其他框架都提供了那些服务。
从哪里开始
使用Xcode提供的内建项目模板很容易建立运行在iPhone OS上的简单应用,但是建立有用并且很好看的应用需要你都花些时间来阅读文档。至少,你应该花时间阅读iPhone Dev Center上的其他相关文章,这些文章探究了建立应用的工具和过程。
如果你对iPhone OS和Mac OS X来说完全是是新手,花时间理解iPhone OS的基本的设计模式和会话对为平台写代码来说是非常困难的。应用程序利用了框架提供的力量就会在iPhone OS上运转的更好。如果你花时间围绕基础的框架行为工作,你会发现建立应用程序比简单的学习使用的基本设计模式困难的多。每个iPhone开发者需要了解的基本信息是Cocoa Fundamentals Guide.这篇文档包含了Objective-C语言和程序会话以及UIKit和许多其他系统框架使用的设计模式的基础。
当你了解了你用来建立iPhone应用程序的基本会话你可以去看iPhone OS Programming Guide来了解开发过程的特定细节。这本书提供了关键的概念和怎样编写iPhone应用的基于任务的信息,包括如何显示用户界面,处理事件和利用iPhone OS关键特性。它也描述了大体的开发过程并如何使用Xcode来运行你的程序。
除了iPhone OS Programming Guide,你也应该查看可用的实例代码。iPhone OS提供了很多有全部特性的实例如何利用可用的技术来建立真实的程序。你也可以使用这些例子作为你自己程序的一个起点或者你可以通过他们学习如何使用特性。
原文地址:http://developer.apple.com/iphone/gettingstarted/docs/iphoneosoverview.action