Cocoa Touch 层
Cocoa Touch层包括创建 iOS应用程序所需的关键框架。
上至实现应用程序可视界面,下至与高级系统服务交互。都须要该层技术提供底层基础。在开发应用程序的时候。请尽可能不要使用更底层的框架,尽可能使用该层的框架。
高级特性
以下章节描写叙述一些常见特性。或许您也正打算在应用程序支持这些特性。
多任务
假设应用程序构建于iPhone SDK 4.0及其兴许版本号(且执行于iOS 4.0及兴许版本号操作系统),则点击Home键的时候。应用程序不会结束,而是切换到后台。对于大多数应用程序来说,进入后台,它们就会进入挂起状态。
让应用程序驻留在后台能够避免以后的又一次启动过程,应用程序能够直接将自己激活,这在非常大程度上改善了总体用户体验。另外。将应用程序挂起也能够改善系统性能,由于挂起应用程序能够最小化电能使用,并可让前台应用程序获得很多其它的执行时间。
虽然应用程序进入后台就会被挂起。但能够通过下述的技术让其在后台继续执行:
-
应用程序能够请求一定的时间完毕某些重要的任务。
-
应用程序能够声明自身支持的某种服务须要获得定期后台运行时间。
-
应用程序能够使用本地通告在指定时间向用户发通知。这样的方式对于应用程序是否执行没有要求。
无论应用程序是被挂起还是在后台执行,支持多任务不须要付出额外的工作。可是在某些情况(比如内存不足)下,应用程序可能会被结束执行。因此。应用程序应该能够在不论什么时候退出。这就意味着很多在退出应用程序时须要执行的任务必须改为在应用程序切换到后台的时候执行。这就要求您在应用程序托付中实现一些新的方法以响应程序的状态切换。
假设须要进一步了解怎样对后台状态切换进行处理以及怎样让应用程序在后台继续执行。请查看iOS应用程序编程指南。
数据保护
和敏感用户数据打交道的应用程序能够使用设备内建加密功能(有些设备可能不提供内建加密功能)对数据进行保护。假设应用程序指定某个文件受保护。系统会以加密格式将该文件保存在磁盘。
当设备锁住的时候,您的应用程序以及其它潜在的闯入者都不能訪问该文件,而当用户解锁设备后,系统会生成一份密钥以便您的应用程序就訪问该文件。
如需实现数据保护,应用程序应在待保护数据的创建和管理方式下一些功夫。
它必须可以在数据创建之时保证其安全。并且须要适配设备上锁或未上锁造成的文件可訪问性的变化。
如需进一步了解应用程序怎样为文件加入数据保护。请查看iOS应用程序编程指南中的实现标准的应用程序行为一章。
苹果推送通知服务
iOS 3.0及兴许版本号的系统中。无论应用程序是否执行。苹果推送通知服务可用于通知用户某个应用程序具有新信息。利用这项服务,您能够向系统推送文本通知,能够触发声音提醒或者在应用程序图标上加入一个数字化标记。
这样用户就知道他们应该打开应用程序接收相关信息。
从设计角度看。让应用程序支持推送通知包括两个部分。首先,iOS应用程序须要请求系统向其发送通知,然后要合理配置应用程序托付使其能够对通知进行恰当处理。这些工作能够通过应用程序托付以及UIApplication
对象合作完毕。
第二。您须要提供一个server端进程用于产生最初的通知。
该进程执行在您自己的本地server,它和苹果推送通知服务协同工作以产生最初的通知。
如需进一步了解怎样配置应用程序以便使用远程通知,请查看本地通知及推送通知编程指南。
本地通知
iOS 4.0引入了本地通知。
本地通知是对已有推送通知的补充。通用程序能够通过它在本地生成通知,不再须要依赖外部server。当有重要的事件发生时,后台应用程序能够利用本地通知获得用户关注。
举个样例。执行于后台的导航应用程序能够使用本地通知提醒用户要转弯。应用程序也能够安排在未来的某个时刻向用户发送本地通知。并且发送这些通知并不要求应用程序处于执行状态。
本地通知的长处是它独立于您的应用程序。一旦某个通知被安排好后。系统会负责通知发送。并且在发送通知的时候,您的应用程序无需处于执行状态
如需进一步了解本地通知的使用方式,请查看本地通知及推送通知编程指南。
手势识别器
iOS 3.2引入了手势识别器。手势识别器是一个绑定到视图的对象,用于检測常见的手势类型。将手势识别器绑定到视图后,您能够告诉它某个手势发生的时候运行何种动作。
之后,手势识别器就能够对原始事件进行跟踪。依据系统定义的试探方式识别手势。在引入手势识别器前,假设要识别一个手势,您须要跟踪视图的原始触摸事件流,然后再使用复杂的试探方法来推断这些事件是否表示某种手势。
如今。UIKit框架中包括一个UIGestureRecognizer
类,它定义了全部手势识别器的基本行为。您能够使用自己定义的手势识别器子类或者系统定义的某个子类处理以下这些标准手势:
-
拍击 (随意次数的拍击)
-
向里或向外捏 (用于缩放)
-
摇动或者拖拽
-
擦碰 (以随意方向)
-
旋转 (手指朝相反方向移动)
-
长按
如需进一步了解您能够使用的手势识别器,请查看iOS事件处理指南。
文件共享支持
应用程序能够使用文件共享让用户訪问程序的用户数据文件。文件共享同意应用程序通过iTunes向用户显露应用程序/Documents
文件夹的内容。这样,用户就能够在iPad和桌面计算机来回移动文件。可是,该功能不同意应用程序和同一设备上的其它应用程序共享文件。假设希望在程序间共享文件。请使用剪贴板或者文档交互控制器对象。
您能够通过例如以下步骤来让应用程序支持文件共享:
-
在应用程序的
Info.plist
文件里加入UIFileSharingEnabled
键,并将键值设置为YES
。 -
将您希望共享的文件放在应用程序的
Documents
文件夹。 -
一旦设备插入到用户计算机,iTunes 9.1就会在选中设备的Apps标签中显示一个File Sharing区域。
-
此后。用户就能够向该文件夹加入文件或者将文件移动到桌面计算机中。
假设应用程序支持文件共享。当文件加入到Documents
文件夹后,应用程序应该可以识别并做出适当响应。
比如说,应用程序可以将新文件的内容显示界面上。请不要向用户展现文件夹的文件列表并询问他们希望对文件运行什么操作。
如需进一步了解 UIFileSharingEnabled
键,请查看信息属性列表參考。
点对点服务
在iOS 3.0 及兴许版本号。Game Kit框架支持经由蓝牙进行点对点连接。
您能够使用点对点连接启动与某个邻近设备的通讯会话。也可用它实现多种多玩家游戏的常见特性。尽管点对点连接主要应用于游戏,但您也可将之应用于其它类型应用程序。
如需进一步了解怎样在应用程序中使用点对点连接的特性。请查看Game Kit 编程指南。
假设须要概要了解Game Kit框架,请查看“Game Kit 框架”。
标准系统视图控制器
Cocoa Touch层很多框架含有展现标准系统界面的视图控制器。我们提倡您在应用程序中使用这些视图控制器。这样能够让您的程序和系统具有一致的用户体验。
假设您须要运行下述任务,请从对应的框架中选择一个视图控制器使用:
-
显示或者编辑联系人信息 - 请使用Address Book UI框架中的视图控制器。
-
创建或者编辑日历事件 - 请使用Event Kit UI框架的视图控制器。
-
创建email或者SMS消息 - 请使用Message UI框架中的视图控制器。
-
打开或者预览一份文件的内容 - 请使用UIKit框架中的
UIDocumentInteractionController
类。 -
从用户的照片库选取一张照片 - 请使用UIKit框架中的
UIImagePickerController
类。 -
拍摄视频片段 - 请使用UIKit框架中的
UIImagePickerController
类。
如需了解怎样选择使用视图控制器,请查看iOS视图控制器编程指南。
如需了解特定视图控制器所展现的界面,请查看对应的框架參考。
外部设备支持
安装iOS 3.2的设备可通过一组设备支持的线缆连接一个外部显示设备。
当外部设备连上后。应用程序就能够使用其显示屏显示内容。屏幕的信息,包含屏幕能够支持的分辨率都可通过UIKit框架的接口获取。您也能够通过该框架将应用程序窗体关联到某个屏幕。
-
UIScreen
类用于获取当前全部屏幕(包含设备主屏幕)的屏幕对象。屏幕对象包含屏幕的属性信息(包含将屏幕的尺寸和像素比例也考虑在内的屏幕特征)。
-
您能够从
UIScreenMode
类获得某个具有特定尺寸像素比例的屏幕的信息。 -
您能够将窗体(使用
UIWindow
类来表示)指定到某个特定的屏幕。假设您须要对内容作镜像显示,则须要提供两个独立的窗体,然后再在当中显示同样内容。
如需进一步了解上述类可提供的支持,请查看UIKit框架參考中对应的类描写叙述。
Cocoa Touch 层包括的框架
以下部分描写叙述Cocoa Touch层包括的框架以及这些框架提供的服务。
Address Book UI 框架
Address Book UI 框架(AddressBookUI.framework
)是一套Objective-C的编程接口。能够显示创建或者编辑联系人的标准系统界面。该框架简化了应用程序显示联系人信息所需的工作,另外它也能够确保应用程序使用的界面和其它应用程序同样,进而保证跨平台一致性。
假设须要进一步了解Address Book UI框架以及怎样使用该框架。请查看iOS地址簿编程指南以及iOS地址簿框架參考。
Event Kit UI 框架
iOS 4.0引入了Event Kit UI框架(EventKitUI.framework
),它提供一个视图控制键能够展现查看并编辑事件的标准系统界面。Event Kit框架(查看“Event Kit框架”可获得该框架的进一步信息)的事件数据是该框架的构建基础。
如需进一步了解Event Kit UI框架类和方法。请查看Event Kit UI框架參考。
Game Kit 框架
iOS 3.0引入了Game Kit框架(GameKit.framework
)。
该框架支持点对点连接及游戏内语音功能,您能够通过该框架为应用程序添加点对点网络功能。点对点连接以及游戏内语音功能在多玩家的游戏中很普遍。只是您也能够考虑将其添加到非游戏应用程序。此框架通过一组建构于Bonjour之上的简单而强大的类提供网络功能,这些类将很多网络细节抽象出来,从而让没有网络编程经验的开发人员能够更加easy地将网络功能整合到应用程序。
如需进一步了解Game Kit框架。 请查看Game Kit 编程指南以及Game Kit 框架參考 。
iAd 框架
iOS 4.0引入了iAd框架 (iAd.framework
)。
您能够通过该框架在应用程序中公布横幅广告。广告会被放入到标准视图,您能够将这些视图增加到用户界面,并在合适的时机向用户展现。这些视图和苹果的公告服务相互协作。自己主动处理广告内容的载入和展现,同一时候也能够响应用户对广告的点击。
如需进一步了解怎样在应用程序其中使用iAd。请查看iAd 框架參考。
Map Kit 框架
iOS 3.0导入了 Map Kit框架 (MapKit.framework
) ,该框架供一个可被嵌入到应用程序的地图界面。该界面包括一个能够滚动的地图视图。
您能够在视图中加入定制信息,并可将其嵌入到应用程序视图。通过编程的方式设置地图的各种属性(包括当前地图显示的区域以及用户的方位)。您也能够使用定制标注或标准标注(比如使用測针标记)突出显示地图中的某些区域或额外的信息。
在iOS 4.0系统中,该框架開始支持可拖动标注以及定制覆盖层。可拖动标注同意您通过编程方式或通过用户交互方式重定位某个标注的位置。覆盖层可用于创建多个点组成的复杂地图标注。地图表面诸如公交路线、选举地图、公园边界或者气象信息(比如雷达数据)等能够使用覆盖层进行显示。
如需进一步了解Map Kit框架中的类。请查看Map Kit 框架參考。
Message UI 框架
iOS 3.0引入了Message UI框架 (MessageUI.framework
)。您能够利用该框架撰写电子邮件。并将其放入到用户的发件箱排队等候发送。
该框架提供一个视图控制器界面,您能够在应用程序中展现该界面,让用户通过该界面撰写邮件。
界面的字段能够依据待发送信息的内容生成。比如您能够设置接收人、主题、邮件内容并能够在邮件中包括附件。这个界面同意用户先对邮件进行编辑,然后再选择接受。
在用户接受邮件内容后,对应的邮件就会放入用户的发件箱排队等候发送。
在iOS 4.0及其兴许的系统中,该框架提供一个SMS撰写面板控制器。
您能够通过它在应用程序中直接创建并编辑SMS信息(无需离开应用程序)。
和电子邮件撰写界面一样,该界面也同意用户先编辑SMS信息再发送。
如需进一步了解Message UI框架中的类,请參考Message UI 框架參考。
UIKit 框架
UIKit框架 (UIKit.framework
)的Objective-C编程接口为实现iOS应用程序的图形及事件驱动提供关键基础。
iOS系统全部程序都须要通过该框架实现下述核心功能:
-
应用程序管理
-
用户界面管理
-
图形和窗体支持
-
多任务支持
-
处理触摸及移动事件。
-
代表标准系统视图和控件的对象
-
文本和web内容相关操作
-
剪切、复制以及粘贴
-
使用动画显示用户界面内容
-
通过URL方式将其它应用程序整合到系统
-
苹果推送通知服务支持。请查看“苹果推送通知服务 ”
-
为残疾用户提供辅助功能
-
本地通知的调度和发送
-
创建PDF
-
使用定制输入视图(其行为类似系统键盘)
-
创建和系统键盘进行交互的定制文本视图
除了链编至应用程序的基础代码,UIKit还为下述和设备紧密相连的功能提供支持:
-
加速器数据
-
内置相机(存在相机的设备)
-
用户的图片库
-
设备名称和模型信息
-
电池状态信息
-
距离感应器信息
-
来自绑定听筒的远程控制信息
如需进一步了解UIKit框架的信息,请查看UIKit 框架參考。
其他一部分框架:
1.音频和视频
Core Audio, OpenAL, Media Library, AV Foundation
2.数据管理
Core Data, SQLite
3.图形和动画
Core Animation, OpenGL ES, Quartz 2D
4.网络
Bonjour, WebKit, BSD Sockets
5.用户应用
Address Book, Core Location, Map Kit, Store Kit