一、概述
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上层
(请注意: 虽然应用程序通常会和底层硬件隔离, 但是应用程序代码仍需考虑设备之间的某些差异。举个例子,iPad和iPod touch不能打开包含电话号码的URL但是iPhone则可以。)
系统接口转而又去和适当的驱动打交道。这样的抽象可以防止您的应用程序改变底层硬件。您创建的应用程序不能直接访问硬件,而需要和系统接口进行交互。系统接口转而又去和适当的驱动打交道。这样的抽象可以防止您的应用程序改变底层硬件。iOS实现可以看作是多个层的集合("Game Kit 框架"含有对这些层的介绍),底层为所有应用程序提供基础服务,高层则包含一些复杂巧妙的服务和技术。
图 1-2 iOS的层
在编写代码的时候,应该尽可能地使用高层框架,而不要使用底层框架。高层框架为底层构造提供面向对象的抽象。这些抽象可以减少需编写的代码行数,同时还对诸如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的参考文档。另外,如果文档库有更新,则更新会被自动下载到本地。
二、CocCocoa Touch 层
Cocoa Touch层包含创建 iOS应用程序所需的关键框架。上至实现应用程序可视界面,下至与高级系统服务交互,都需要该层技术提供底层基础。在开发应用程序的时候,请尽可能不要使用更底层的框架,尽可能使用该层的框架。
高级特性
下面章节描述一些常见特性,也许您也正打算在应用程序支持这些特性。
多任务
如果应用程序构建于iPhone SDK 4.0及其后续版本(且运行于iOS 4.0及后续版本操作系统),则点击Home键的时候,应用程序不会结束,而是切换到后台。对于大多数应用程序来说,进入后台,它们就会进入挂起状态。让应用程序驻留在后台可以避免以后的重新启动过程,应用程序可以直接将自己激活,这在很大程度上改善了整体用户体验。另外,将应用程序挂起也可以改善系统性能,因为挂起应用程序可以最小化电能使用,并可让前台应用程序获得更多的执行时间。尽管应用程序进入后台就会被挂起,但可以通过下述的技术让其在后台继续运行:
✓应用程序可以请求一定的时间完成某些重要的任务。
✓应用程序可以声明自身支持的某种服务需要获得定期后台执行时间。
✓应用程序可以使用本地通告在指定时间向用户发通知。这种方式对于应用程序是否运行没有要求。
不管应用程序是被挂起还是在后台运行,支持多任务不需要付出额外的工作。但是在某些情况(例如内存不足)下,应用程序可能会被结束运行。因此,应用程序应该可以在任何时候退出。这就意味着许多在退出应用程序时需要执行的任务必须改为在应用程序切换到后台的时候执行。这就要求您在应用程序委托中实现一些新的方法以响应程序的状态切换。
数据保护
和敏感用户数据打交道的应用程序可以使用设备内建加密功能(有些设备可能不提供内建加密功能)对数据进行保护。如果应用程序指定某个文件受保护,系统会以加密格式将该文件保存在磁盘。当设备锁住的时候,您的应用程序以及其他潜在的闯入者都不能访问
该文件,而当用户解锁设备后,系统会生成一份密钥以便您的应用程序就访问该文件。
如需实现数据保护,应用程序应在待保护数据的创建和管理方式下一些功夫。它必须能够在数据创建之时保证其安全,而且需要适配设备上锁或未上锁造成的文件可访问性的变化。
itunes更新ios7苹果推送通知服务
iOS 3.0及后续版本的系统中,不管应用程序是否运行,苹果推送通知服务可用于通知用户某个应用程序具有新信息。利用这项服务,您可以向系统推送文本通知,可以触发声音提醒或者在应用程序图标上添加一个数字化标记。这样用户就知道他们应该打开应用程序接收相关信息。从设计角度看,让应用程序支持推送通知包含两个部分。首先,iOS应用程序需要请求系统向其发送通知,然后要合理配置应用程序委托使其可以对通知进行恰当处理。这些工作可以通过应用程序委托以及UIApplication对象合作完成。第二,您需要提供一个服务器端进程用于产生最初的通知。该进程运行在您自己的本地服务器,它和苹果推送通知服务协同工作以产生最初的通知。
本地通知
iOS 4.0引入了本地通知。本地通知是对已有推送通知的补充,通用程序可以通过它在本地生成通知,不再需要依赖外部服务器。当有重要的事件发生时,后台应用程序可以利用本地通知获得用户关注。举个例子,运行于后台的导航应用程序可以使用本地通知提醒用户要转弯。应用程序也可以安排在未来的某个时刻向用户发送本地通知,而且发送这些通知并不要求应用程序处于运行状态。本地通知的优点是它独立于您的应用程序。一旦某个通知被安排好后,系统会负责通知发送。而且在发送通知的时候,您的应用程序无需处于运行状态。
手势识别器
iOS 3.2引入了手势识别器。手势识别器是一个绑定到视图的对象,用于检测常见的手势类型。将手势识别器绑定到视图后,您可以告诉它某个手势发生的时候执行何种动作。之后,手势识别器就可以对原始事件进行跟踪,根据系统定义的试探方式识别手势。在引入手势识别器前,如果要识别一个手势,您需要跟踪视图的原始触摸事件流,然后再使用复杂的试探方法来判断这些事件是否表示某种手势。
现在,UIKit框架中包含一个UIGestureRecognizer 类,它定义了所有手势识别器的基本
行为。您可以使用自定义的手势识别器子类或者系统定义的某个子类处理下面这些标准手势:
拍击 (任意次数的拍击)
向里或向外捏 (用于缩放)
摇动或者拖拽
擦碰 (以任意方向)
旋转 (手指朝相反方向移动)
长按
文件共享支持
应用程序可以使用文件共享让用户访问程序的用户数据文件。文件共享允许应用程序通过iTunes向用户显露应用程序/Documents目录的内容。这样,用户就可以在iPad和桌面计
算机来回移动文件。但是,该功能不允许应用程序和同一设备上的其他应用程序共享文件。如果希望在程序间共享文件,请使用剪贴板或者文档交互控制器对象。
您可以通过如下步骤来让应用程序支持文件共享:
✓在应用程序的Info.plist文件中添加UIFileSharingEnabled键,并将键值设置为YES。
✓将您希望共享的文件放在应用程序的Documents目录。
✓一旦设备插入到用户计算机,iTunes 9.1就会在选中设备的Apps标签中显示一个File Sharing区域。
此后,用户就可以向该目录添加文件或者将文件移动到桌面计算机中。
如果应用程序支持文件共享,当文件添加到Documents目录后,应用程序应该能够识别并做出适当响应。例如说,应用程序可以将新文件的内容显示界面上。请不要向用户展现目录的文件列表并询问他们希望对文件执行什么操作。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论