本文转载至 http://jingyan.baidu.com/article/cdddd41c57360853cb00e124.htmlhtml
Core Services层是系统不少部分的基础部分,也许应用程序并不直接使用这些服务,可是Core Services层为全部的应用程序提供基础系统服务。今天主要和你们分享一下Core Services层一些关键技术。但愿对你们可以有所帮助!web
本文转载至 http://jingyan.baidu.com/article/cdddd41c57360853cb00e124.htmlhtml
Core Services层是系统不少部分的基础部分,也许应用程序并不直接使用这些服务,可是Core Services层为全部的应用程序提供基础系统服务。今天主要和你们分享一下Core Services层一些关键技术。但愿对你们可以有所帮助!web
1、云存储正则表达式
iOS5.0引入,云存储容许你的应用程序存储用户文档和数据到云端,以及从用户的电脑和iOS设备访问这些数据。把用户的数据存在云端,意味着用户能够在任何设备上查看以及编辑这些文档无需同步以及设备间传递这些文件。在用户的iCloud的帐号中存储这些文件还为用户提供了一层安全防御,即便用户丢失了一个设备,这些都是从蓝鸥讲师那学到的,是他们让咱们懂得了更多。用户的数据是不会所以而丢失的。有两种方法可让应用程序使用云存储,每一种都有本身的使用场景。一、iCloud文档存储------使用这个特性存储用户文档和数据到用户的iCloud帐户二、iCloud键值数据存储-----使用这个特性去共享应用程序中的少许实例对象。大多数应用程序使用iCloud文档存储特性经过iCloud帐户共享文档数据,这个特性是用户对iCloud存储的认识,用户关心的是这些共享的文件是否跨设备了,是否能够经过一个给定的设备查看以及管理这些文件。相比之下,iCloud键值数据存储是用户看不到的,这是你应用程序共享少许数据(几十KB)一种方式。应用程序使用这个特性来存储非关键性的数据,而不是重要数据。例如存储用户偏好。注:如要了解如何在应用程序中使用iCloud,参考iCloud Design Guide。sql
2、自动引用计数iOS5引入,自动引用计数(ARC)是一个编译器级别的功能,简化了OC对象生命周期的管理,相对于开发者本身时刻记着什么时候retain和release对象,ARC会在编译期间自动评估你对象的生命周期而且插入适当的内存管理方法(retain和release方法)。 ARC替代了出如今iOS早期的版本中的传统内存管理模式,你建立的新工程默认使用ARC,Xcode也提供了工具把非ARC工程转换为ARC工程,更多关于ARC的信息,参考Transitioning to ARC Release Notes。数据库
3、块对象iOS4.0引入,block对象是一个C语言层面上的对象,能够嵌入到你的C和OC代码里面。block对象本质上是一个匿名函数,能够像函数同样拥有参数和返回值,其余语言里把这种对象称做closure或者lambda。blocks多用于回调或者用于绑定操做和操做须要的数据。在iOS中,blocks经常使用于如下场景:一、做为代理和代理方法的替代二、做为回调方法的替代三、一次性操做完成以后的事件处理四、执行集合中每一个元素的方法五、和disPatch queue一通实现异步任务。关于block对象以及它们的使用的介绍,参考A Short Practical Guide to Blocks。更多关于blocks的信息,参考Blocks Programming Topics。编程
4、数据保护iOS4.0引入,数据保护容许应用程序使用设备内置的编码器对用户的敏感数据进行处理。当你的应用程序把某个文件指定为保护类型时,系统会把这个文件以加密形式存放在硬盘上。当设备被锁定时,你的应用程序和潜在的入侵者都没法访问文件内容。然而,当你的设备被用户解锁以后,会建立一个解密密钥,以容许你的应用程序访问文件。iOS5以后,数据保护增长了被保护文件的安全级别,这些级别容许你访问一个已经打开的文件,尽管用户已经锁定了设备,或是解锁屏幕后用户随后又锁定了设备。实现数据保护须要你考虑如何建立和管理想要保护的数据。应用程序必须保证数据建立时的安全,还要处理锁屏与解锁时数据的安全。更多关于如何在应用程序为文件添加数据安全的资料,参考iOS App Programming Guide。数组
5、文件共享支持iOS3.2引入,文件分享能让您经过iTunes(版本9.1之后)直接看到应用程序中的用户数据。一个应用程序设置了文件共享以后,Documents文件夹下的内容能够被用户从iTunes中看到,用户能够根据须要经过iTunes往此文件夹增长文件或者今后文件夹移出文件。这个特性不容许你把文件共享给同一个设备上的其余应用程序。若是要给其余程序共享文件你须要使用粘贴板后者文档交互控制器对象。启动应用程序的文件共享,须要完成如下事项:一、往应用程序的Info.plist文件添加一个key“UIFileSharingEnabled”,而且将此key对应的value设置为YES。二、把你须要共享的文件存放到应用程序的Documents文件夹里面。三、设备链接到iTunes以后,iTunes应用程序选项卡中的文件共享部分会显示你设备里全部支持文件共享的应用程序,用户能够把文件拖动到应用程序Documents文件夹或者把里面的文件拖动到电脑上。支持文件共享的应用程序能检测到是否有文件添加到Documents文件夹,应用程序须要作适当的回应。例如,你的应用程序应该在界面上显示出来这些新添加的文件,而不是弹出Documents文件列表询问用户须要作什么操做。更多UIFileSharingEnabled的信息,参考Information Property List Key Reference。缓存
6、Grand Central DispatchiOS4.0引入,它是BSD级别的技术,可用于在应用程序内管理多个任务的执行,GCD技术将异步编程模型和高度优化内核结合在一块儿,可做为多线程的便捷(且更高效)替代。同时,它为许多底层任务(例如读写文件描述符、实现计时器、监视信号和处理事件等)提供替代方案。更多关于程序内使用GCD的方式,参考Concurrency Programming Guide。更多关于GCD函数的信息,参考Grand Central Dispatch(GCD)Reference。安全
7、程序内购买iOS3.0引入,经过该功能,你能够在应用程序内出售内容或者服务,该功能使用Store Kit框架来实现,它能够为使用iTunes帐户进行的财务交易的处理提供基础支持,应用程序只须要处理用户体验及代售内容或服务的展示。iOS6中,增长了内容托管和应用程序内购买iTunes内容的支持。经过内容托管,你能够把用于下载的内容存储在苹果的服务器上,经过iTunes内容购买功能,你的应用程序标记须要卖的物品,剩下的一些事物由Store Kit帮你处理。更多关于程序内购买的支持,参考In-App Purchase Programming Guide。更多关于Store Kit框架的信息,参考Store Kit Framework。性能优化
8、SQLiteSQLite库容许开发者将一个轻量级的SQL数据库潜入到应用程序,并且开发者不须要运行独立的远程数据库服务器进程。在此以后,开发者能够在应用程序中建立本地数据库文件,管理文件的表和记录。虽然SQLite数据库出于通用目的而设计,但它仍是针对数据库记录的快速访问作过优化。用于访问SQLite库的头文件位于<iOS_SDK>/usr/include/sqlite3.h。在该路径中,<iOS_SDK>是Xcode安装目录中目标SDK的路径,更多关于如何使用SQLite的信息,访问http://www.sqlite.org网站。
9、XML支持Foundation框架支持使用NSXMLParser类从XML文档中解析元素,而libxml2库则为操做XML内容提供支持,libxml2库是开源的,它可让你快速地解析或写入任意的XML数据,也能够将XML内容转换为HTML文件。用于访问libxml2库的头文件位于<iOS_SDK>/usr/include/libxml2/。在该路径中,<iOS_SDK>是Xcode安装目录中目标SDK的路径,更多libxm2的使用信息,请访问http://xmlsoft.org/index.html网站。
Core Services层框架
Accounts FrameworkiOS5引入,为特定用户帐号提供一个单点登陆模型,单点登陆提升了用户体验,由于应用程序不在须要分别提示用户输入帐户的登陆信息。它还简化了你应用程序管理帐户受权的过程。iOS5.0里,应用程序可使用这个框架结合Twitter框架访问用户的Twitter帐户。更多关于Accounts框架类的信息,参考Accounts Framework Reference。
Address Book FrameworkAddress Book框架支持编程访问存储于用户设备中的联系人信息。若是应用程序使用到联系人信息,则可经过该框架访问并修改用户联系人数据库的记录。举个例子,经过使用该框架,聊天程序能够获取一个联系人列表,利用此列表初始化聊天会话,并在联系人视图显示列表的联系人。iOS6之后,访问用户联系人信息须要通过用户的容许,应用程序必须作好被拒绝访问的准备,应用程序也须要提供一个属性列表来描述为何要访问通信录,用以获取用户许可。更多Adress Book框架的功能,参考Address Book Framework Reference for iOS.
Ad support FrameworkiOS6引入,Ad Support框架为要用广告服务的应用程序提供了一个广告标识符。这个框架一样提供了一个opt-out标识来标明用户是否退出广告。应用程序须要读取并根据opt-out标识,决定是否访问广告标识符。更多关于这个框架的信息,参考Ad Support Framework Reference。
CFNetwork FrameworkCFNetwork框架提供一组高性能基于C语言的接口,它们为使用网络协议提供面向对象抽象。经过这些抽象,你能够对协议栈进行更精细的控制,并且可使用诸如BSD socket这类底层结构。你也能够经过该框架简化诸如与FTP或HTTP服务器通信以及DNS主机解析这类任务。下面列举一些可使用CFNetwork框架执行的任务:一、使用BSD sockets二、使用SSL或TLS建立加密链接三、解析DNS主机四、使用HTTP,校验HTTP以及HTTPS服务器五、使用FTP服务器六、发布、解析并浏览Bonjour服务。CFNetwork理论及实现都以BSD socket为基础。更多关于如何使用CFNetwork框架的信息,参考CFNetwork Programming Guide和CFNetwork Framework Reference。
Core Data FrameworkiOS3.0引入,Core Data框架是一种管理模型-视图-控制器应用程序数据模型的技术,它适用于数据模型已经高度结构化的应用程序。经过此框架,您不再须要经过编程定义数据结构,而是经过Xcode提供的图形工具构造一份表明数据模型的图标。在程序运行的时候,Core Data框架就会建立并管理数据模型的实例,同时还对外提供数据模型访问接口。经过Core Data管理应用程序的数据模型,能够极大程度减小编写的代码数量。除此以外,Core Data还具备下述特征:一、将对象数据存储在SQLite数据库以得到性能优化二、提供NSFetchedResultsController类用于管理表视图的数据三、管理undo/redo操做四、属性值校验支持五、支持对数据变化进行传播,而且不会改变对象间的关联六、支持对数据进行归档,过滤,并支持对内存数据进行管理若是您正在开发新应用程序或打算对某个现有的程序进行大幅度更新,请考虑使用Core Data。若是须要了解如何在iOS应用程序中使用Core Data,参考Core Data Tutorial for iOS.若是须要进一步了解Core Data框架中的类,参考Core Data Framework Reference。
Core Foundation FrameworkCore Foundation框架是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:一、群体数据类型(数组、集合等)二、程序包三、字符串管理四、日期和时间管理五、原始数据块管理六、偏好管理七、URL及数据流操做八、线程和RunLoop九、端口和socket通信Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供OC接口。若是您将Foundation对象和Core Foundation类型参杂使用,则可利用两个框架之间的“toll-free-bridging”。所谓的Toll-free-bridging是说您能够在某个框架的方法或函数同时使用Core Foundation和Foundation框架中的某些类型。不少数据类型支持这一特性,其中包括群体和字符串数据类型。每一个框架的类和类型描述都会对每一个对象是否为toll-free bridged,应和什么对象进行桥接进行说明。更多信息,参考Core Foundation Framework Reference。
Core Location FrameworkCore Location矿建可用于定位某个设备当前经纬度。它能够利用设备硬件特性,经过附近的GPS、蜂窝基站或者WiFi信号等信息计算用户方位。Maps应用程序就是利用此功能在地图上显示用户当前位置。您能够将此技术结合到应用程序中,以向用户提供访问信息。例如,应用程序课根据用户当前位置搜索附近饭店、商店或其余设施。在iOS3.0系统中,该框架开始支持访问iOS设备的方向信息在iOS4.0系统中,该框架开始支持低能耗的方位监视服务,该服务利用蜂窝基站跟踪用户方位。如何使用Core Location去得到位置以及方向信息,参考Location Awareness Programming Guide和Core Location Framework Reference。
Core Media FrameworkiOS4.0引入了Core Media框架,此框架提供AV Foundation框架使用的底层媒体类型。只有少数须要对音频或视频建立及展现,进行精确控制的应用程序才会涉及此框架,其余大部分应用程序都用不上。如需进一步了解此框架的函数和数据类型,参考Core Media Framework Reference。
Core Motion FrameworkCore Motion框架提供了一个单一的接口集,用于访问设备上全部基于运动的数据。这个框架提供了一系列Block接口来访问和处理原始或加工后的加速计数据。经过内置的陀螺仪,你能够检索原始数据、映射后的属性以及在设备上的旋转速率。你能够在游戏或者其余须要经过运动进行输入来提升用户体验的应用程序中使用加速计和陀螺仪。更多这个框架的类和方法的信息,参考Core Motion Framework Reference。
Core Telephony FrameworkiOS4.0引入了Core Telephony框架,此框架为访问具备蜂窝无线的设备上的电话信息提供接口,应用程序可经过它获取用户蜂窝无线服务的提供商信息。若是应用程序对于电话呼叫感兴趣,也能够在相应事件发生时获得通知。如需进一步了解如何使用该框架的类和方法,参考Core Telephony Framework Reference。
Event Kit FrameworkiOS4.0引入了Event Kit框架,此框架为访问用户设备的日历事件提供接口,您能够经过该框架访问用户日历中现有事件,能够增长新事件。日历事件可包含闹铃,并且能够配置闹铃激活规则。iOS6添加了建立和访问用户设备上提醒的功能,你建立的提醒会经过“提醒”应用程序呈现出来。此外访问日历和提醒须要经过用户许可,应用程序要作好被拒绝访问此功能的准备,一样须要提供一个属性列表来描述须要访问的缘由,以便获得用户许可。更多这个框架中类和方法的信息,参考Event KitFramework Reference和Event Kit UI Framework。
Foundation FrameworkFoundation框架为Core Foundation框架的许多功能提供OC封装。您能够参考Core Foundation Framework了解前面对Core Foundation框架的描述。Foundation框架为下述功能提供支持:一、群体数据类型(数组、集合等)二、程序包三、字符串管理四、日期和时间管理五、原始数据块管理六、偏好管理七、URL及数据流操做八、线程和RunLoop九、Bonjour十、通信端口管理十一、国际化十二、正则表达式匹配1三、缓存支持如需进一步了解如何使用该框架的类和方法,参考Foundation Framework Reference。
Mobile Core Services FrameworkiOS3.0引入了Mobile Core Services框架,此框架定义统一类型标识符(UTIs)使用的底层类型。如需进一步了解此框架定义的类型,参考Uniform Type Identifiers Reference。
Newsstand Kit FrameworkiOS5引入了Newsstand框架,为用户提供了一个专属位置来阅读杂志和报纸。出版商能够在他们本身的应用程序使用Newsstand Kit框架将本身的报刊和杂志放在Newsstand里,它容许你在后台下载新的报刊和杂志,在你开始一个下载,系统会去处理下载操做,并通知你应用程序中有新的内容。更多关于管理Newsstand下载的类的信息,参考Newsstand Kit Framework Reference。更多关于如何使用远程通知的信息,参考Local and Push Notification Programming Guide。
Pass Kit FrameworkiOS6引入,Pass Kit:使用web服务,一个新的文件格式,是OC层次上的框架,来实现通行证的下载。公司能够建立通行证表明物品,例如优惠券、登机牌、活动门票和折扣卡业务。相对于携带这些实实在在的物品,Pass Kit实现了将这些信息存储于iOS设备的功能,使用起来和实物是同样的效果。通行证经过你公司的web服务建立,使用邮件、Safari或者你的程序传递到用户的iOS设备,通行证自己使用了一个特殊的文件格式而且会在传递以前先加密。经过文件格式来区别不一样的服务,以便用户知道它是什么(优惠券、打折卡等)。它可能包含一个条码或者其余信息,你能够凭借它获取相应服务或者获得所需物品。更多关于Pass Kit的信息以及如何将Pass Kit加入到你的应用程序,参考Passbook Programming Guide。
Quick Look FrameworkiOS4.0引入了Quick Look框架,应用程序能够用该框架预览没法直接支持查看的文件内容。若是应用程序从网络下载文件或者需处理来源未知的文件,则很是适合使用此框架。由于应用程序只要得到文件后,调用框架提供的视图控制器就能够直接在界面中显示文件的内容。如需进一步了解该框架的类和方法,请参考Quick Look Framework Reference。
Social FrameworkiOS6.0引入了Social框架,提供了简单的接口访问用户社交媒体帐户。这个框架替代了iOS5引入的Twitter框架,而且增长了其余社交帐户的支持,包括FaceBook和新浪微博服务。用户可使用这个框架经过用户帐号发布新的状态和图片。这个框架和Accounts框架配合使用为用户提供一个单点登陆(确保用户帐号是容许访问的)。更多Social框架的信息,参考Social Framework Reference。
Store Kit FrameworkiOS3.0引入Store Kit框架,此框架为iOS应用程序内购买内容或服务提供支持。例如,开发者能够利用此框架容许用户解锁应用程序的额外功能。或者假设您是一名游戏开发人员,则可以使用此特性向玩家出售附加游戏关卡。在上述的两个状况中,Store Kit框架会处于交易过程和财务相关的事件,包括处理用户经过iTunes Store帐号发出的支付请求而且向应用程序提供交易相关信息。Store Kit框架主要关注交易过程当中和财务相关的事务,目的是为了确保交易安全准确。应用程序须要处理交易事务的其余因素,包括购买界面和下载恰当的内容。经过这种任务划分方式,您就有用购买内容的控制权,能够决定但愿展现给用户的购买界面以及什么时候向用户展现这些界面,同时也能够决定和应用程序最匹配的交付机制。如需进一步了解Store Kit框架的使用方式,参考In-App Purchase Programming Guide和Store Kit Framework Reference。
System Configuration FrameworkSystem Configuration框架可用于肯定设备的网络配置。您可使用该框架判断WiFi或者蜂窝网络链接是否正在使用中,也能够用于判断某个主机服务是否可使用。如需进一步了解此框架提供的接口,参考System Configuration Framework Reference。如需经过此框架获取网络信息的示例,参考Reachability示例代码工程。
Core OS层Core OS层包含了不少技术的底层技术支持,在应用程序里面,尽管你没有直接使用这些底层技术,可是他们被高层的框架所使用。若是须要显示的处理安全模块或者与硬件通讯,你会Core OS层上的一些框架。
Accelerate FrameworkiOS4.0引入的,包含接口执行DSP、线性代数以及图像处理计算。这个框架的优点:本身写接口封装这些底层高性能的接口,这些接口一旦写成,就能够很是方便的移植不一样的程序中,而且支持全部iOS设备运行。更多关于Accelerate框架中函数的使用,参考 Accelerate Framework Reference。
Core Bluetooth Framework蓝牙框架容许开发者与其余低功耗蓝牙设备交互,这个框架的OC接口容许你扫描低功耗蓝牙设备,与其中一个设备链接或者断开链接,读取或者写入服务的属性,注册服务以及监听属性的变化,等等。更多关于Core Bluetooth框架接口的介绍,参考 Core Bluetooth Framework Reference。
External Accessory FrameworkiOS3.0引入,External Accessory(外部辅助)框架提供了与iOS相关辅助设备通讯技术,外部辅助设备能够经过30针的数据线链接或者经过蓝牙进行无线链接。外部辅助框架提供了一种方法来获取每一个可用的配件以及发起通讯会话,以后,还能够经过相关命令直接控制配件。更多这个框架的使用信息,参考 External Accessory Programming Topics,以及http://developer.apple.com
Generic Security Services Services FrameworkiOS5引入的,通用安全服务框架为iOS程序提供了一组标准的安全相关服务,这个框架的基本接口是在IETF RFC 2743和RFC 4401中指定的。除了提供标准的接口,iOS还增长了管理证书的接口(标准接口里没有,可是须要应用程序要求)。更多GSS框架的接口,参考对应的头文件。
Security FrameworkiOS系统不但提供内建的安全功能,还提供Security框架,用于保证程序所管理数据的安全,该框架提供的接口可用于管理证书、公钥、私钥以及信任策略。它支持生成加密的安全伪随机数。同时,它也支持对证书和KeyChain密钥进行保存,是用户敏感数据的安全仓库。Common Crypto接口另外还支持对称加密、HMAC以及Digests。Digests的功能和OpenSSL库经常使用的功能兼容,可是iOS没法使用OpenSSL库。iOS3.0以后,你可让所建立的多个应用程序共享某些KeyChain项,这样可让相同套件内的应用程序胡勇更流畅。例如,你能够在应用程序间共享用户密码和其余元素,经过这种方法,你就不须要在每一个应用程序单独对用户作出提示。如应用程序须要共享数据,则每一个应用程序的Xcode功能必须一样的受权。更多Security框架的功能和特性,参考Security Framework Reference。如何使用Keychain参考,KeyChain Services Programming Guide。如何在Xcode工程中设置应用程序的受权,参考Tools Workflow Guide for iOS。如需了解能够对哪些应用程序受权进行配置,参考KeyChain Services Reference中的SecItemAdd函数。
System系统层包括内核环境、驱动及操做系统底层UNIX接口,内核以Mach为基础,它负责操做系统的各个方面,包括管理系统的虚拟内存、线程、文件系统、网络以及进程间通讯。这一层包含的驱动是系统硬件和系统框架的接口,处于安全方面的考虑,内核和驱动只容许少数系统框架和应用程序访问。应用程序可使用iOS提供的LibSystem库访问多种操做系统底层功能。LibSystem库的接口基于C语言,可为下述功能提供支持:一、线程(POSIX线程)二、网络(BSD sockets)三、文件系统访问四、标准I/O五、Bonjour和DNS服务六、区域信息七、内存分配八、数学计算许多Core OS技术的头文件位于<iOS_SDK>/usr/include/目录,<iOS_SDK>是Xcode安装目录中目标SDK的路径。若是须要了解这些技术相关的功能,参考iOS Manual Pages
若是你还想了解更多的有关iOS培训方面的知识,如:C语言、OC语言、UI单视图控制器、UI多视图控制器、硬件特性以及底层支持,此外还有针对跨平台开发的C++和Cocos2D-X,能够多了解蓝鸥,他们的内容更丰富,更详细!!