Core Services层为所有的应用程序提供基础系统服务。可能应用程序并不直接使用这些服务,但它们是系统很多部分赖以建构的基础。
高阶特性
下面的部分描述一些比较常见特性,也许您正打算让您的应用程序支持这些特性。
块对象
iOS 4.0引入了块对象。块对象是C级别的构造,您可以在C或Objective-C代码中使用快对象。从本质上说,块对象本质上是一个匿名函数加上该函数的伴随数据。有些时候,其他语言也称块对象为 closure或者lambda。块对象非常适用于回调函数。如果您需要有很便捷的方法将执行代码和相关数据组合在一起,块对象也是很好的选择。
在 iOS系统中,块对象通常用于下述场合:
作为委托或委托方法的替代品。
作为回调函数的替代品。
用于实现一次性操作的完成处理器。
简化在群体所有子项上迭代执行某种任务的操作。
配合分发队列。可用于执行异步任务。
如需了解块对象及其使用方式,请查看块对象简短实践指南 。如需进一步了解块对象, 请查看块对象编程论述 。
Grand Central Dispatch
iOS 4.0引入了 Grand Central Dispatch (GCD),它是BSD级别的技术,可用于在应用程序内管理多个任务的执行。GCD技术将异步编程模型和高度优化内核结合在一起,可作为多线程的便捷(且更高效)替代。同时,它也为许多种底层任务( 例如读写文件描述符、实现定时器、监视信号和处理事件等)提供替代方案。
如需进一步了解在应用程序内使用GCD的方式,请查看并发编程指南 。如果需要了解特定GCD函数的信息,请查看Grand Central Dispatch (GCD)参考 。
应用程序内购买(In App Purchase)
iOS 3.0引入了应用程序内购买功能。通过该功能,您可以在应用程序内出售内容或服务。该功能使用Store Kit框架来实现,它可以为使用iTunes账户进行的财务交易的处理提供基础支持,应用程序只需处理用户体验及待售内容或服务的展现。
如果需要进一步了解iOS如何支持应用程序内购买功能,请参考应用程序内购买编程指南 。如需进一步了解 Store Kit框架,请参考“Store Kit框架” 。
定位服务
应用程序可使用Core Location框架提供的接口追踪用户位置。此框架利用当前可用的硬件无线电波(包括Wi-Fi、蜂窝无线或者GPS)定位用户的当前位置。应用程序可以对框架提供的信息进行裁剪,然后再将其发送给客户, 或是用于实现某些特定功能。举个例子,社交应用程序允许您找到附近其他应用程序用户,然后再与之进行通讯。
如需进一步了解如何使用定位服务,请阅读方位感知编程指南 。如需进一步了解Core Locatio框架,请阅读“Core Location框架 ”。
SQLite
SQLite库允许开发者将一个轻量级SQL数据库嵌入到应用程序,而且开发者不需要运行独立的远程数据库服务器进程。在此之后,开发者可以在应用程序中创建本地数据库文件,管理文件中的表和记录。虽然SQLite数据库出于通用目的而设计,但它还是针对数据库记录的快速访问做过优化。
用于访问SQLite库的头文件位于 <iOS_SDK>
/usr/include/sqlite3.h
。 在该路径中, <iOS_SDK>是Xcode安装目录中目标SDK的路径。如果需要更多如何使用SQLite的信息, 请访问http://www.sqlite.org网站。
XML 支持
Foundation框架支持使用
NSXMLParser
类从XML文档中解析元素,而
libXML2
库则为操作XML内容提供支持。
libXML2
库是开源的,它可以让您快速地解析或写入任意的XML数据,也可将XML内容转化为HTML文件。
用于访问
libXML2
库的头文件位于 <iOS_SDK>
/usr/include/libxml2/
。 在该路径中, <iOS_SDK>是Xcode安装目录中目标SDK的路径。如要更多
libXML2
的使用信息, 请访问 http://xmlsoft.org/index.htm 网站。
Core Services 框架
下述部分描述Core Services层的框架以及这些框架提供的服务。
Address Book 框架
Address Book框架 (
AddressBook.framework
)支持编程访问存储于用户设备中的联系人信息。如果应用程序使用到联系人信息,则可通过该框架访问并修改用户联系人数据库的记录。举个例子,通过使用该框架,聊天程序可以获取一个联系人列表,利用此列表初始化聊天会话,并在联系人视图显示列表的联系人。
如果需要进一步了解 Address Book框架的功能,请访问Address Book 框架参考 。
CFNetwork 框架
CFNetwork框架 (
CFNetwork.framework
)提供一组高性能基于C语言的接口,它们为使用网络协议提供面向对象抽象。通过这些抽象,您可以对协议栈进行更精细的控制,而且可以使用诸如 BSD socket这类底层结构。您也可以通过该框架简化诸如与FTP或HTTP服务器通讯以及DNS主机解析这类任务。下面列举一些可以使用 CFNetwork框架执行的任务:
使用BSD sockets
使用SSL或TLS创建加密连接
解析DNS主机
使用HTTP,校验HTTP以及HTTPS服务器。
使用FTP服务器
发布、解析并浏览 Bonjour服务。
CFNetwork理论及实现都以 BSD socket为基础。如需更多如何使用CFNetwork框架的信息, 请访问CFNetwork编程指南以及CFNetwork框架参考。
Core Data 框架
iOS 3.0引入Core Data框架(
CoreData.framework
)。Core Data框架是一种管理模型-视图-控制器应用程序数据模型的技术,它适用于数据模型已经高度结构化的应用程序。通过此框架,您再也不需要通过编程定义数据结构,而是通过Xcode提供的图形工具构造一份代表数据模型的图表。在程序运行的时候,Core Data框架就会创建并管理数据模型的实例,同时还对外提供数据模型访问接口。
通过Core Data管理应用程序的数据模型,可以极大程度减少需编写的代码数量。除此之外,Core Data还具有下述特征:
将对象数据存储在SQLite数据库以获得性能优化。
提供
NSFetchedResultsController
类用于管理表视图的数据。
管理undo/redo操作。
属性值校验支持。
支持对数据变化进行传播,并且不会改变对象间的关联。
支持对数据进行归类,过滤,并支持对内存数据进行管理。
如果您正在开发新应用程序或打算对某个现有的程序进行大幅度更新,请考虑使用Core Data。如果需要了解如何在iOS应用程序中使用Core Data,请参考iOS Core Data 教程 。如果需要进一步了解Core Data框架中的类,请参考Core Data框架参考 。
Core Foundation 框架
Core Foundation框架 (
CoreFoundation.framework
) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:
群体数据类型 (数组、集合等)
程序包
字符串管理
日期和时间管理
原始数据块管理
偏好管理
URL及数据流操作
线程和RunLoop
端口和soket通讯
Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objective-C接口。如果您将Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “toll-free bridging”。所谓的Toll-free bridging是说您可以在某个框架的方法或函数同时使用Core Foundatio和Foundation 框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对某个对象是否为 toll-free bridged,应和什么对象桥接进行说明。
如需进一步信息,请阅读Core Foundation 框架参考。
Core Location 框架
Core Location框架 (
CoreLocation.framework
)可用于定位某个设备当前经纬度。它可以利用设备具备的硬件,通过附近的GPS、蜂窝基站或者WiFi信号等信息计算用户方位。Maps应用程序就是利用此功能在地图上显示用户当前位置。您可以将此技术结合到应用程序,以此向用户提供方位信息。例如,应用程序可根据用户当前位置搜索附近饭店、商店或其他设施 。
在iOS 3.0系统中,该框架开始支持访问iOS设备(具有相应硬件的设备)的方向信息。
在iOS 4.0系统中,该框架开始支持低能耗的方位监视服务,该服务利用蜂窝基站跟踪用户方位。
如需了解Core Location框架中的类,请参考Core Location 框架参考 。
Core Media 框架
iOS 4.0引入了Core Media框架 (
CoreMedia.framework
)。此框架提供AV Foundation框架使用的底层媒体类型。只有少数需要对音频或视频创建及展示进行精确控制的应用程序才会涉及该框架,其他大部分应用程序应该都用不上。
如需进一步了解此框架的函数和数据类型,请阅读Core Media 框架参考。
Core Telephony 框架
iOS 4.0引入了Core Telephony框架(
CoreTelephony.framework
)。此框架为访问具有蜂窝无线的设备上的电话信息提供接口,应用程序可通过它获取用户蜂窝无线服务的提供商信息。如果应用程序对于电话呼叫感兴趣,也可以在相应事件发生时得到通知。
如需进一步了解如何使用该框架的类和方法,请阅读Core Telephony框架参考。
Event Kit 框架
iOS 4.0引入了 Event Kit框架 (
EventKit.framework
)。此框架为访问用户设备的日历事件提供接口。您可以通过该框架访问用户日历中现有事件,可以增加新事件。日历事件可包含闹铃,而且可以配置闹铃激活规则。
如需进一步了解如何使用该框架的类和方法,请阅读Event Kit 框架参考 ,也可参考Event Kit UI 框架。
Foundation 框架
Foundation框架 (
Foundation.framework
)为 Core Foundation框架的许多功能提供Objective-C封装。您可以参考Core Foundation框架了解前面对Core Foundation框架的描述。 Foundation框架为下述功能提供支持:
群体数据类型 (数组、集合等)
程序包
字符串管理
日期和时间管理
原始数据块管理
偏好管理
URL及数据流操作
线程和RunLoop
Bonjour
通讯端口管理
国际化
正则表达式匹配
缓存支持
如需进一步了解如何使用该框架的类和方法,请阅读Foundation框架参考 。
Mobile Core Services 框架
iOS 3.0引入了Mobile Core Services框架 (
MobileCoreServices.framework
)。此框架定义统一类型标识符 (UTIs)使用的底层类型。
如需进一步了解此框架定义的类型,请查看统一类型标识符参考 。
Quick Look 框架
iOS 4.0引入Quick Look框架(
QuickLook.framework
),应用程序可以用过该框架预览无法直接支持查看的文件内容。如果应用程序从网络下载文件或者需处理来源未知的文件,则非常适合使用此框架。因为应用程序只要在获得文件后,调用框架提供的视图控制器就可以直接在界面中显示文件的内容。
如需进一步了解该框架的类和方法,请参考Quick Look框架参考。
Store Kit 框架
iOS 3.0引入Store Kit 框架(
StoreKit.framework
),此框架为iOS应用程序内购买内容或服务提供支持。例如,开发者可以利用此框架允许用户解锁应用程序的额外功能。或者假设您是一名游戏开发人员,则可使用此特性向玩家出售附加游戏级别。在上述的两种情况中,Store Kit 框架会处于交易过程中和财务相关的事件,包括处理用户通过 iTunes Store账号发出的支付请求并且向应用程序提供交易相关信息。
Store Kit框架主要关注交易过程中和财务相关的事务,目的是为了确保交易安全准确。应用程序需要处理交易事物的其他因素,包括购买界面和下载(或者解锁)恰当的内容。通过这种任务划分方式,您就拥有购买内容的控制权,可以决定希望展示给用户的购买界面以及何时向用户展示这些界面,同时也可以决定和应用程序最匹配的交付机制。
如需进一步了解Store Kit框架的使用方式,请查看应用程序内购买编程指南以及Store Kit 框架参考 。
System Configuration 框架
System Configuration框架(SystemConfiguration.framework) 可用于确定设备的网络配置。您可以使用该框架判断Wi-Fi或者蜂窝连接是否正在使用中,也可以用于判断某个主机服务是否可以使用。
如需进一步了解此框架提供的接口,请查看System Configuration框架参考。如需通过此框架获取网络信息的示例,请访问 Reachability样例工程。