iPhone OS概述及架构介绍
【IT168 技术文档】
iPhone OS 概述:
iPhoneOS 包括了操作系统和支持应用程序在iPhone和iPod touch上运行的平台。虽然他和Mac OSX平台共享并继承了一些相同的部分,但是iPhone OS是基于移动环境开发的,移动平台和桌面平台用户的需求是有一些区别的。现有的Mac OSX平台的开发者将会在iPhone OS中发现一些熟悉的技术,但是他们同样也能看见一些只有iPhoneOS才有的一些独特的技术,比如多点感应,加速感应器.

iPhoneSDK 包含了源代码,信息,工具让你可以用来开发,测试,调试,并且把应用程序导入到iPhoneOS中去。Xcode开发工具已经开始支持iPhoneOS平台。除了最基础的编辑,编译,和调试环境外,Xcode同样带有断点测试用来测试你的iPhone和iPod touch。Xcode同样让你可以提供了iPhone的模拟调试环境,他就是一个迷你的iPhone OS的环境让你可以在你的PC机上调试。
这篇文章包含了对于iPhone OS基础特性的高层概述,用来帮助你理解iPhone OS平台,你可以在iPhone DevCenter中找到其他的一些文章来帮组你更快的理解有关开发iPhone应用程序的基础,你可以通过这些文章来引导你学习iPhone OS。
iPhone OS 技术的层次结构
在iPhone OS中,一些系统的底层架构,和许多技术都来自于Mac OS X。iPhone OS的核心是基于Mach核心的构建,Mac OS X也使用了这个核心。在这个核心的顶层是用户实现应用程序的平台服务层。图一显示这些层的分布.
(图:iPhone OS技术的分层模型)

这个层次让你在开发你的代码的时候有了更多的选择。举个例子,Core OS和Core Services层包含了一些iPhoneOS的基础接口,让你可以访问文件,底层数据类型,Bonjourservices,网络Socekt,等等。这些接口大多数都是基于C的技术,同时也包含了CoreFoundation,CFNetwork,SQLite,和POSIX线程访问特别是UNIX的一些接口.)
如果你注意到较高的层次,你会发现一些混合了C和Objective-C的高级技术。举个例子,Media层包含了一些基本的技术用于支持2D和3D 绘图,声音,和影片。这个层包含了基于C的OpenGLES,Quartz,和核心音频。他同时包含了核心的动画,那是一个基于Objective-C的动画引擎。
在 CocoaTouch层,大多数是基于Objective-C的技术,这个架构提供了你应用程序的一些基础架构和框架。据个例子,Foundation框架提供了面向对象的如收集,文件管理,网络操作等支持。UIKit框架提供了你的应用程序的一些基本的视图基础架构,包含windows类,views 类,controls类,和用于管理其他对象的控制器,在这层的其他一些框架可以让你访问用户的内容,图片的信息,和设备硬件加速度这些特性。
所以新项目的开始都是从CocoaTouch层和UIKit框架开始的。当你决定需要添加另外的一些技术的时候,你最好从高层向下使用那些你需要底层的基础支持。高层的一些框架可以让你很容易的制作出标准的系统的一些行为和你想要展现的效果。当你发现高层无法提供你自定义的行为的时候你才向底层架构去访问信息。
框架
Cocoa Touch Layer
- Address Book UI
- UIKit
Media Layer
- Audio Toolbox
- Audio Unit
- AV Foundation
- Core Audio
- Core Graphics
- Media Player
- OpenGL ES
- Quartz Core
Core Services Layer
- Address Book
- Core Foundation
- Core Location
- Foundation
- System Configuration
Core OS Layer
- CFNetwork
- Security
在 iPhone OS中写代码
iPhone SDK支持在iPhoneOS中运行面向图形的应用程序。你的应用程序会连同系系统中的程序如Photos,Weather和Clock一起显示在 Home界面上。当你的应用程序激活了,除了核心和一些底层的应用外,你的程序都运行在系统中,在运行时,你的程序会占满整个屏幕,他会接受用户所有的命令和操作。当用户按下了Home按钮后,你的应用程序退出,然后系统对象又显示Home界面了。拥有你自己的系统对象是有好处的,这样他可以让你自如的访问系统的资源。你可以访问硬件加速对象,摄像头,图形硬件等信息,让他们为你的程序服务。
用户在iPhone和iPod touch设备上的开发方法和Mac OSX上的开发方法是不一样的,你设计你的应用程序的时候自然也不一样了。在iPhone程序中,没有其他的文档窗口对象用于显示内容。取而代之的是所有的应用程序数据都显示在一个单一的window中。他让你有了新的views和controls来让你重新安排和组织你的应用程序对象。另外许多标准的 views和controls的行为也许和他们在Mac OS X中有点不一样.一些想法也许需要变形一下,但等多的是需要你重新规划和布置你的数据。)
事件控制模型在iPhone OS中同样和桌面应用程序有些不一样。iPhone OS用touchevents来代替了传统的鼠标和键盘时间。一个touch event可以在任何时间和任何一个touchevents同时使用。触摸事件可以用来和内容做简单交互,比如选择,拖放项目,或者他们可以被用于复杂的行为,如点击,捏放,扩大等手势【比如在图片对象上进行缩放的例子】
除了这些基础的架构外你的应用程序还需要考虑到用户到底需要什么。iPhone的应用程序必须清楚的认识到用户当系需要什么样的操作,行为,效果。记住,用户要的是马上得到他想要的东西,而不是通过好多层或者切换了好多屏幕才得到他要的结果。用以简单的表示出用户所要的重点信息是很重要的设计。对于游戏和其他一些有趣的应用程序来说,你需要知道用户想要通过加速度或者照相机想要得到的一些更高层的交互体验这是一个程序好坏的关键所在。
当你开始开发的时候你首先要使用的就是Fundation和UIKit框架。这两个框架提供了所有的iPhone应用程序关键的服务。当你更深入开发你的代码的时候,你可能需要关心一下其他层的框架提供了什么样的服务。帮助文档包含了一些概念上的和这个框架有关的一些帮助,你可以通过他们来了解这个框架。
从那里开始?
你可以很容易的使用Xcode提供的模板来创建一个简单的iPhoneOS应用程序,但是制作一个有趣的,有用的应用程序需要你花费更多的时间去查阅文档,组织计划你的代码。最低程度上你要在iPhone DevCenter阅读一些有关开发过程和创建应用程序的文章。
如果你是iPhone OS 和 Mac OS X上的新手,你需要花点时间去理解一些基本的设计模式和在iPhoneOS平台上开发的注意要点。开发好的应用程序需要你很好的应用好框架提供的功能。如果你花时间在一些基础的框架的行为的理解上,你会发现创建一个应用程序比学习一些基本的设计模式难的多。对于每一个iPhone的开发者来说必须知道的是 Cocoa基础引导中提供的一些信息。这个文档提供了Objective-C的一些基础知道和开发的一些常识还有UIKit中的设计麽设等其他一些系统架构。
当你理解了一些基础的iPhone应用程序开发后,你可以参考iPhone OS Programming Guide来不帮助你进入更详细的开发。这本书提供了一些有关如何开发iPhone应用程序关键的概念和基于任务形式的信息,同时包含了一些例子如怎么样显示用户结构,事件控制,和iPhone OS的一些关键特性。他同样包含了一些综合的开发过程和说明如何在Xcode中建立你的应用程序。
除了iPhone OS Programming Guide外你同样需要看一些例子代码。iPhoneOS帮助中包含了一些例子他囊括了iPhoneOS特性,你可以通过他们的一些有用的技术来创建真实世界中的应用程序。你可以使用这些例子作为你的起点,你也可以通过他们学习一些特殊的用法。