iPhone开发系列文章(一)-iPhone OS 概述

本人根据iPhone Dev Center 技术资料翻译并总结而成

转载请注明出处:http://blog.csdn.net/zhyzh2046/

iPhone OS由两部分组成:操作系统和能在iPhone和iPod touch设备上运行原生程序的技术。由于iPhone是为移动终端而开发,所以要解决的用户需求就与Mac OS X有些不同,尽管在底层的实现上iPhone与Mac OS X共享了一些底层技术。如果你是一名Mac开发人员,你可以在iPhone OS发现很多熟悉的技术,同时也会注意到iPhone OS的独有之处,比如多触点接口(Multi-Touch interface)和加速器(accelerometer) 。虽然到现在我还没有搭建起iPhone的开发环境,但是根据以往对iPhone的了解,有很多新鲜的技术是我需要学习的。比如,在软件的设计中使用它的多触点技术以及控制感应器的技术。下图为iPhone和iPod Touch,仅从外观看就相当炫了。

iPhone开发系列文章(一)-iPhone OS 概述

在SDK发布之前,第三方的程序是不能在iPhone上运行的(有些黑客可以运行第三方程序)。随着SDK的发布,iPhone的爱好者便可以开发在iPhone上运行的应用程序了。iPhone SDK包含了所需的资料和工具,使用这些工具可以开发、测试、运行、调试和调优程序以适合iPhone OS。XcodeIDE已经更新到支持iPhone OS的开发。除了提供代码的基本编辑、编译和调试环境,当在iPhone或者iPod touch设备上调试你的程序, Xcode还提供了运行点(launching point)功能。不知道这是怎样一个功能,估计就是在实际设备上设置断点,并可以看到运行的log信息。同时,Xcode还可以在iPhone模拟器中运行程序,模拟器就是指在Macintosh电脑上模拟基本的iPhone OS环境的平台。这个我比较喜欢,因为条件有限,只能从虚拟机上看看自己程序的效果,等有了实力再把程序放到真机上运行。模拟器对于学习iPhone的编程流程和语言是相当方便的。

这篇文章概述了iPhone OS基本特征,可以帮你熟悉这个平台。其实这篇文章基本上是从iPhone Dev Center翻译过来的,但是不完全是。我将一些冗余信息删除并加上了自己的见解,如有瑕疵请指正。

iPhone OS技术分层

在iPhone OS中,底层系统架构和许多其它技术与Mac OS X中的技术是非常相似的。因为iPhone OS的内核是基于Mac OS X 10.5中的Mach内核变化而来的。其实是对Mac OS X 10.5的Mach内核进行了相应的裁剪,并加上iPhone特有技术的支持而来的。内核之上是服务层,使用这些服务可以在平台之上开发应用。图1展示了而这些层的概图。

iPhone开发系列文章(一)-iPhone OS 概述

Figure1 iPhone OS 技术分层

这样的分层给开发带来了多种选择。下面两层与硬件部分直接交互,例如,Core OS和Core Services层包含了iPhone OS的基本接口,包括文件的访问、底层数据类型、Bonjour服务和网络的Sockets等。这些接口大部分是基于C语言的,包括的技术有:Core Foundation、CFNetwork、SQLite、POSIX线程的访问和UNIX sockets。我觉得iPhone的内核应该是用C写的,而且Mach的内核是一种UNIX的内核,所以使用这两层进行程序开发,就相当于使用Linux 的API进行程序开发,在这两层,你可以使用你的代码直接操作硬件,当然这需要你对较底层的开发比较熟悉。

上面两层会有更多高级的技术,这些技术使用基于C和基于Objective-C的混合接口。比如,Media层包含了支持2D和3D绘图、音频和视频的基本技术。这一层包含了基于C的技术:OpenGL ES, Quartz, and Core Audio。同时也包含Core Animation,这时一种基于Objective-C的高级的动画引擎。Objective-C语言是C的面向对象的扩展,在这里可以看作是Linux中QT库一样,你可以像使用QT的类和接口那样来使用基于Objective-C的接口,这些都是使用Objective-C语言封装好的,它可以缩短开发的时间,但前提是要熟悉Objective-C语言。

最上面一层-Cocoa Touch层中,大部分的技术使用Objective-C。这层中的许多框架为你的程序提供了基础的底层构造。比如,Foundation框架为集合、文件管理和网络的操作提供了面向对象的支持。UIKit框架为你的程序提供可视化的底层构架,包括窗口、视图、控件类和管理这些对象的控制器。这一层中的其它框架允许你访问用户的联系人和图片信息,以及设备上的加速器和其它硬件特征。在看多几个iPhone的程序之后,发现使用最多的就是UIKit框架,它提供了一个简单的图形界面程序所需要的控件,所以你可以是不熟悉Linux或Unix开发的程序员,你只要学会UIKit框架中控件的使用方法,你就可以创建iPhone程序。

新项目的出发点应该是Cocoa Touch层,特别是UIKit框架。当选择何种附加技术时,建议你从高层的框架开始,需要时,则应求助于低层的框架。如果要在你的程序中使用最少的工作量来支持标准的系统行为,更高层的框架会使这一过程变得简单。当要实现更高层中没有提供的定制行为时,这是唯一使用更低层框架的时间。

iPhone OS的更详细的技术概览,请参考iPhone OS编程指南

个人认为,初学者应该从最上一层开始,尤其是从没有Mac开发经验的人。上层的框架会节省你开发的时间,并且上层的框架已经非常强大,可以基本满足一个简单程序所需的所有技术。

为iPhone OS编写代码

iPhone的SDK可以创建运行在iPhone OS上的图形界面程序。当运行自己开发的程序时,程序会驻留在主屏幕上,和其它系统程序是一样的,比如Photos 、Weather和Clock。程序运行时,除了内核和一些底层后台程序,它是唯一运行在系统之上的程序。程序运行时,会占据整个屏幕,用户能看到的也只有你的程序。当用户点击Home按钮,程序退出的同时显示系统的主页面。独占系统的优势在于,它提供了底层系统资源的完全访问权利。你可以利用内置的硬件,如加速器、摄像头和图形硬件来只运行你的代码。

由于用户与iPhone和iPod touch设备的交互方式和与Mac OS X的交互方式有本质的不同,所以设计应用的方式也必然不同。主要的区别就是用户的输入方式有很大不同,在Mac OS X上是使用键盘和鼠标来捕捉用户的输入,系统给予响应。在iPhone上,OS要通过触摸屏捕捉用户的输入,同时要处理用户的多触点输入。iPhone程序中,在显示内容时没有单独文件窗口的概念,程序的所有数据显示在单一的窗口中。这就产生了新的视图和控件,以组织好的样式来呈现你的应用程序数据。另外,很多视图和控件会与Mac OS X中有所不同。大部分变化是透明的,但是有一些需要你重新考虑组织和呈现数据的方式。

对于传统桌面应用来说,iPhone OS的事件处理模型也是一项重要的里程碑。iPhone OS引入了触摸事件的概念,而不是依赖传统的鼠标和键盘事件。触摸事件随时发生,并且可以和一个或多个触摸事件结合。触摸事件可以用作与内容的简单交互,如选择或拖拽Item,或者可以用作检测复杂的姿势和交互动作,比如重击或者打开缩放和关闭缩放动作。(例如,在Photos程序中用作缩小、放大的动作)。其实,这是iPhone的一大创新,在自己的程序设计与架构中,应该尽量利用这一优势,给用户更好的使用体验。

当开始开发时,最初会用到的框架是FoundationUIKit框架。这两个框架提供了所有iPhone应用的关键服务。当要精炼你的应用时,应该研究系统的其它框架,看看它们提供了哪些服务。每个框架的文档包含相关概念资料的链接,这些会帮你学习更多使用这个框架的知识。

从哪里开始

利用Xcode提供的内置项目模板可以相当简单地创建简单的应用程序,但是,创建实用且漂亮的应用需要你用一些时间来通读现有文档。最少你应该花些时间来通读iPhone Dev Center中其它几篇引导文章,它们研究了工具和开发应用的流程。最为初学者,现在的任务就是学习这几篇入门文章,然后能运行一个Helloword程序,这就足够了。

如果你不熟悉iPhone OSMax OS X的开发,就必须要先理解基本的设计模式和iPhone OS的约定。开发iPhone的程序要尽量实用系统提供的框架,这样你开发的程序才能在iPhone中流畅地运行。如果深入学习框架的基本功能,你会发现在实际中创建自己的应用远比简单地学习基本设计模式困难得多。Cocoa基础指南包含了每个iPhone开发人员需要了解的基本知识。这份文档介绍了Objective-C编程语言的基础知识、编程习惯、UIKit用到的设计模式以及许多其它系统框架。

一旦理解了创建iPhone应用的基本习惯,你在开发过程中可以在iPhone OS编程指南中查阅到详细资料。这个指南包含了怎样编写iPhone应用的关键概念上的和面向任务的资料,怎样显示用户界面、处理事件和利用主要的iPhone OS特征的例子。同时,它描述了全部开发过程并说明如何使用Xcode编译和运行应用。

iPhone OS编程指南之外,你最好也通读现有的实例代码。iPhone OS带有大量全功能的例子,它会展示怎样使用现有技术去创建真实的应用。你可以使用这些示例作为自己应用的出发点,或者通过它们,可以学习更多怎样使用特定特征的知识。在iPhone Dev Center中有许多示例代码,都很简单,但是这有助于你学习iPhone程序的框架以及Objective-C语言。

你可能感兴趣的:(编程,框架,OS,Objective-C,xcode)