iOS是运行于iPhone、iPod touch以及 iPad设备的操作系统,它管理设备硬件并为手机本地应用程序的实现提供基础技术。根据设备不同,操作系统具有不同的系统应用程序,例如Phone、Mail以及Safari,这些应用程序可以为用户提供标准系统服务。
iPhone SDK包含开发、安装及运行本地应用程序所需的工具和接口。本地应用程序使用iOS系统框架和Objective-C语言进行构建,并且直接运行于iOS设备。它与web应用程序不同,一是它位于所安装的设备上,二是不管是否有网络连接它都能运行。可以说本地应用程序和其他系统应用程序具有相同地位。本地应用程序和用户数据都可以通过iTunes同步到用户计算机。
iOS 架构
iOS架构和Mac OS的基础架构相似。站在高级层次来看,iOS 扮演底层硬件和应用程序(显示在屏幕上的应用程序)的中介,如图 1-1所示。您创建的应用程序不能直接访问硬件,而需要和系统接口进行交互。系统接口转而又去和适当的驱动打交道。这样的抽象可以防止您的应用程序改变底层硬件。
图 1-1 应用程序位于iOS上层
![iOS 开发相关信息 - hackbin - 一个人的天空 High level platform architecture](http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iOs_TechOverview/Art/iphone_architecture.jpg)
请注意: 虽然应用程序通常会和底层硬件隔离, 但是应用程序代码仍需考虑设备之间的某些差异。举个例子,iPad和iPod touch不能打开包含电话号码的URL但是iPhone则可以。
iOS实现可以看作是多个层的集合("Game Kit 框架"含有对这些层的介绍),底层为所有应用程序提供基础服务,高层则包含一些复杂巧妙的服务和技术。
图 1-2 iOS的层
![iOS 开发相关信息 - hackbin - 一个人的天空 Layers of iOS](http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iOs_TechOverview/Art/SystemLayers.jpg)
在编写代码的时候,应该尽可能地使用高层框架,而不要使用底层框架。高层框架为底层构造提供面向对象的抽象。这些抽象可以减少需编写的代码行数,同时还对诸如socket和线程这些复杂功能进行封装,从而让编写代码变得更加容易。虽说高层框架是对底层构造进行抽象,但是它并没有把底层技术屏蔽起来。如果高层框架没有为底层框架的某些功能提供接口,开发者可以直接使用底层框架。
本文档后续章节将对每一层所包含的技术和框架进行描述。
iPhone SDK 包含哪些东西?
在使用Intel芯片的Macintosh计算机开发iOS应用程序所需的全部接口、工具以及资源全都包含于iPhone SDK。
苹果公司将大部分系统接口发布在框架这种特殊的数据包。一个框架就是一个目录,它包含一个动态共享库以及使用这个库所需的资源(例如头文件、图像以及帮助应用程序等)。如果要使用某个框架,则需要将其链接到应用程序工程,这一点和使用其他共享库相似。另外,您还需要告知开发工具何处可以找到框架头文件以及其他资源。
除了使用框架,苹果公司还通过标准共享库的形式来发布某些技术。 由于iOS以UNIX为基础,操作系统底层的许多技术都源自开源技术,这些技术的许多接口可以从标准库和接口目录访问。
SDK中还包含下述重要组件:
Xcode工具 -提供iOS应用程序开发工具,包括如下关键应用程序:
Xcode -是一个集成开发环境,它负责管理应用程序工程。您可以通过它来编辑、编译、运行以及调试代码。Xcode还集成了许多其他工具,它是开发过程中使用到的主要应用程序。
Interface Builder -以可视化方式组装用户接口的工具。通过Interface Builder创建出来的接口对象将会保存到某种特定格式的资源文件,并且在运行时加载到应用程序。
Instruments - 运行时性能分析和调试工具。您可以通过 Instruments 收集应用程序运行时的行为信息,并利用这些信息来确认可能存在的问题。
iPhone模拟器 -是Mac OS X平台应用程序,它对iOS技术栈进行模拟,以便于您可以在基于Intel的Macintosh计算机上测试iOS应用程序。
iOS参考库- SDK默认包含iOS的参考文档。另外,如果文档库有更新,则更新会被自动下载到本地。通过选择Help > Developer Documentation就可以看到参考库。
SDK提供编写应用程序所需的软件,而且Xcode和Instruments允许您直接与绑定设备进行交互,在目标硬件运行并调试代码。如果您需要在实际设备上开发,请加入苹果公司的收费iPhone开发者计划,并将设备配置成开发用途。如需进一步了解iPhone开发者计划,请访问http://developer.apple.com/iphone/program/页面。
如果您需要了解如何安装iPhone SDK以及如何使用iPhone SDK开发iOS应用程序,则请参考iOS开发指南。如果进一步了解iOS的框架,并且希望了解何处可以找到底层的系统库,则请参考“iOS框架”。
您可以在 iOS 创建什么应用程序?
用户可以在设备上运行两种不同类型的定制应用程序:Web应用程序和本地应用程序。Web应用程序将HTML、层叠样式表以及JavaScript代码结合在一起,以此来实现具有交互性的应用程序,这些应用程序存在于web服务器,通过网络传送到用户设备上,并运行于Safari浏览器。而本地应用程序则是直接安装在设备上,无需配备网络连接就可以运行。
iPhone SDK仅能用于创建显示于设备Home屏的本地应用程序,它不支持创建其他诸如驱动、框架、动态库等类型的代码。如果您希望将某个框架或者动态库整合到应用程序,则应在链编工程的时候静态地将其链接到应用程序执行文件。
如何使用参考库?
iOS参考库包含各种文档、样例代码以及教程,这些材料可为编写应用程序提供帮助。不过参考库包含数千页的文档,上至起步介绍,下至API参考文档尽皆涵盖其中。因此,明白如何找到需要的信息是开发过程的重要步骤。参考库使用几种数种技术来组织内容,以使其更易于浏览。
您可以从苹果开发者网站访问iOS参考库,也可以从Xcode访问。 只要在Xcode中选择 帮助>开发者文档,就可以把XCode的文档窗口显示在屏幕上。此窗口是访问iOS开发信息的核心,您可以在其中浏览文档并执行搜索,还可以为稍后可能阅读的文档添加书签。各个文档早已按其内容进行归类,这样可为更新提供便利,也可以把搜索的范围精确至相关的文档。
在安装 iPhone SDK的时候,Xcode 会自动为您安装包含iOS参考库的文档集。(XCode也会自动为您下载文档更新,不过您可以在偏好设置中取消此行为。)iOS参考库包含非常多的信息。因而,对其排版设计稍作了解意义重大。图 1-3显示的是Xcode文档窗口中参考库的主。页面顶部的工具栏包含搜索框和按键,可用于导航至其他已安装的文档集或是已创建的书签。 您可以按主题、框架或者其他您正在查找的资源类型浏览文档,也可以使用过滤器来控制文档列表,减少显示的文档集。
图 1-3 iOS参考库
![iOS 开发相关信息 - hackbin - 一个人的天空 The iPhone Reference Library](http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iOs_TechOverview/Art/reflib_intro.jpg)
重要: iOS参考库的内容有可能不是最新的,您可以从iPhone开发中心(http://www.apple.com.cn/developer/iphone)访问最新的文档、发布纪要、技术纪要、技术, 技术Q&A以及样例代码。所有的文档都有HTML格式版本,大部分有PDF格式版本。
参考库提供海量信息,在编写代码时翻查这些信息非常麻烦。为了帮助您快速找到某些特定信息,XCode为您提供如图 1-4所示的Quick Help窗口。该窗口向您显示和某个指定符号相关的信息,包括它的语法、描述以及可以使用该符号的SDK版本。另外,该窗口还显示该符号的相关文档以及样例代码。点击窗口中的链接就可以进入到参考库中相应的资源。如果希望显示Quick Help窗口,请按住Option键然后再双击Xcode编辑窗口中的某个符号。
图 1-4 Xcode中的Quick help窗口
![iOS 开发相关信息 - hackbin - 一个人的天空 The Xcode Research Assistant](http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iOs_TechOverview/Art/quick_help.jpg)
如果需要进一步了解文档窗口和Quick Help窗口,请参考Xcode Workspace指南。