系统架构及常用框架

引言:

Mac系统是基于 Unix 内核的图形化操作系统。 Mac OS 和 iOS 系统架构的对比分析发现,Mac OS 和 iOS的系统架构层次只有最上面一层不同,Mac 是Cocoa框架,而 iOS 是Cocoa Touch框架,其余的架构层次都是一样的。



# 一. 核心系统操作层(Core OS)

提示

用FreeBSD和Mach所改写的一个名叫Darwin的开放原始码操作系统。

包含了很多技术的底层技术支持,在应用程序里面,尽管你没有直接使用这些底层技术,但是他们被高层的框架所使用。包含内存管理、文件系统、电源管理、硬件驱动、网络等等功能。它可以直接和硬件设备进行交互。

# Accelerate.framework

iOS 4.0引入了Accelerate框架(Accelerate.framework)。该框架的接口可用于执行线性代数、图像处理以及DSP运算。

和开发者个人编写的库相比,该框架的优点在于它根据现存的各种iOS设备的硬件配置进行过优化。因此,自己只编写一次接口封装这些底层高性能的接口, 就可以非常方便的移植不同的程序中,就可确保它在所有设备高效运行。

# Core Bluetooth Framework

蓝牙框架:允许开发者与其他低功耗蓝牙设备交互,这个框架的OC接口允许你扫描低功耗蓝牙设备,与其中一个设备连接或者断开连接,读取或者写入服务的属性,注册服务以及监听属性的变化,等等。

# External Accessory Framework

外部辅助框架:iOS3.0引入,框架提供了与iOS相关辅助设备通信技术,外部辅助设备可以通过30针的数据线连接或者通过蓝牙进行无线连接。外部辅助框架提供了一种方法来获取每个可用的配件以及发起通信会话,之后,还可以通过相关命令直接控制配件。

# Security Framework

安全服务框架:OS系统不但提供内建的安全功能,还提供Security框架,用于保证程序所管理数据的安全,该框架提供的接口可用于管理证书、公钥、私钥以及信任策略。它支持生成加密的安全伪随机数。同时,它也支持对证书和KeyChain密钥进行保存,是用户敏感数据的安全仓库。

Common Crypto接口另外还支持对称加密、HMAC以及Digests。

# System

系统层包括内核环境、驱动及操作系统底层UNIX接口,内核以Mach为基础,它负责操作系统的各个方面,包括管理系统的虚拟内存、线程、文件系统、网络以及进程间通信。这一层包含的驱动是系统硬件和系统框架的接口,处于安全方面的考虑,内核和驱动只允许少数系统框架和应用程序访问。

应用程序可以使用iOS提供的LibSystem库访问多种操作系统底层功能。LibSystem库的接口基于C语言,可为下述功能提供支持:

  1. 线程(POSIX线程)
  2. 网络(BSD sockets)
  3. 文件系统访问
  4. 标准I/O
  5. Bonjour和DNS服务
  6. 区域信息
  7. 内存分配
  8. 数学计算

# 二. 核心服务层(Core Services)

提示

Core Services层为所有的应用程序提供基础系统服务。可能应用程序并不直接使用这些服务,但它们是系统很多部分的基础。

# 云存储

iOS5.0引入,云存储允许你的应用程序存储用户文档和数据到云端,以及从用户的电脑和iOS设备访问这些数据。把用户的数据存在云端,意味着用户可以在任何设备上查看以及编辑这些文档无需同步以及设备间传递这些文件。在用户的iCloud的账号中存储这些文件还为用户提供了一层安全防护,即使用户丢失了一个设备,用户的数据是不会因此而丢失的。

两种方法可以使用云存储: 1、iCloud文档存储——使用这个特性存储用户文档和数据到用户的iCloud账户。 2、iCloud键值数据存储—–使用这个特性去共享应用程序中的少量实例对象。

# 自动引用计数

iOS5引入,自动引用计数(ARC)是一个编译器级别的功能,简化了OC对象生命周期的管理,相对于开发者自己时刻记着何时retainrelease对象,ARC会在编译期间自动评估你对象的生命周期并且插入适当的内存管理方法(retain和release方法)。

# 块对象(block)

iOS4.0引入,block对象是一个C语言层面上的对象,可以嵌入到你的C和OC代码里面。block对象本质上是一个匿名函数,可以像函数一样拥有参数和返回值,其他语言里把这种对象称作closure或者lambda。blocks多用于回调 或者 用于绑定操作和操作需要的数据。

在iOS中,blocks常用于以下场景:

  1. 作为代理和代理方法的替代
  2. 作为回调方法的替代
  3. 一次性操作完成之后的事件处理
  4. 执行集合中每个元素的方法
  5. 和disPatch queue一通实现异步任务。

# 数据保护

iOS4.0引入,数据保护允许应用程序使用设备内置的编码器对用户的敏感数据进行处理。当你的应用程序把某个文件指定为保护类型时,系统会把这个文件以加密形式存放在硬盘上。当设备被锁定时,你的应用程序和潜在的入侵者都无法访问文件内容。然而,当你的设备被用户解锁之后,会创建一个解密密钥,以允许你的应用程序访问文件。

iOS5之后,数据保护增加了被保护文件的安全级别,这些级别允许你访问一个已经打开的文件,尽管用户已经锁定了设备,或是解锁屏幕后用户随后又锁定了设备。

实现数据保护需要你考虑如何创建和管理想要保护的数据。应用程序必须保证数据创建时的安全,还要处理锁屏与解锁时数据的安全。

# 文件共享支持

iOS3.2引入,文件分享能让您通过iTunes(版本9.1以后)直接看到应用程序中的用户数据。一个应用程序设置了文件共享之后,Documents文件夹下的内容可以被用户从iTunes中看到,用户可以根据需要通过iTunes往此文件夹增加文件或者从此文件夹移出文件。这个特性不允许你把文件共享给同一个设备上的其他应用程序。如果要给其他程序共享文件你需要使用粘贴板后者文档交互控制器对象。

启动应用程序的文件共享,需要完成以下事项:

  1. 往应用程序的Info.plist文件添加一个keyUIFileSharingEnabled,并且将此key对应的value设置为YES。
  2. 把你需要共享的文件存放到应用程序的Documents文件夹里面。
  3. 设备连接到iTunes之后,iTunes应用程序选项卡中的文件共享部分会显示你设备里所有支持文件共享的应用程序,用户可以把文件拖动到应用程序Documents文件夹或者把里面的文件拖动到电脑上。

支持文件共享的应用程序能检测到是否有文件添加到Documents文件夹,应用程序需要做适当的回应。例如,你的应用程序应该在界面上显示出来这些新添加的文件,而不是弹出Documents文件列表询问用户需要做什么操作。

# Grand Central Dispatch(GCD)

iOS4.0引入,它是BSD级别的技术,可用于在应用程序内管理多个任务的执行,GCD技术将异步编程模型和高度优化内核结合在一起,可作为多线程的便捷(且更高效)替代。同时,它为许多底层任务(例如读写文件描述符、实现计时器、监视信号和处理事件等)提供替代方案。

# 程序内购买

iOS3.0引入,通过该功能,你可以在应用程序内出售内容或者服务,该功能使用Store Kit框架来实现,它可以为使用iTunes账户进行的财务交易的处理提供基础支持,应用程序只需要处理用户体验及代售内容或服务的展现。

iOS6中,增加了内容托管和应用程序内购买iTunes内容的支持。通过内容托管,你可以把用于下载的内容存储在苹果的服务器上,通过iTunes内容购买功能,你的应用程序标记需要卖的物品,剩下的一些事物由Store Kit帮你处理。

# SQLite

SQLite库允许开发者将一个轻量级的SQL数据库潜入到应用程序,而且开发者不需要运行独立的远程数据库服务器进程。在此之后,开发者可以在应用程序中创建本地数据库文件,管理文件的表和记录。虽然SQLite数据库出于通用目的而设计,但它还是针对数据库记录的快速访问做过优化。

# XML支持

Foundation框架支持使用NSXMLParser类从XML文档中解析元素,而libxml2库则为操作XML内容提供支持,libxml2库是开源的,它可以让你快速地解析或写入任意的XML数据,也可以将XML内容转换为HTML文件。

# Accounts Framework

iOS5引入,为特定用户账号提供一个单点登录模型,单点登录提高了用户体验,因为应用程序不在需要分别提示用户输入账户的登录信息。它还简化了你应用程序管理账户授权的过程。iOS5.0里,应用程序可以使用这个框架结合Twitter框架访问用户的Twitter账户。

# Address Book Framework

Address Book框架支持编程访问存储于用户设备中的联系人信息。如果应用程序使用到联系人信息,则可通过该框架访问并修改用户联系人数据库的记录。举个例子,通过使用该框架,聊天程序可以获取一个联系人列表,利用此列表初始化聊天会话,并在联系人视图显示列表的联系人。

iOS6以后,访问用户联系人信息需要经过用户的允许,应用程序必须做好被拒绝访问的准备,应用程序也需要提供一个属性列表来描述为什么要访问通讯录,用以获取用户许可。

# Ad support Framework

iOS6引入,Ad Support框架为要用广告服务的应用程序提供了一个广告标识符。这个框架同样提供了一个opt-out标识来标明用户是否退出广告。应用程序需要读取并根据opt-out标识,决定是否访问广告标识符。

# CFNetwork Framework

CFNetwork理论及实现都以BSD socket为基础。CFNetwork框架提供一组高性能基于C语言的接口,它们为使用网络协议提供面向对象抽象。通过这些抽象,你可以对协议栈进行更精细的控制,而且可以使用诸如BSD socket这类底层结构。你也可以通过该框架简化诸如与FTP或HTTP服务器通讯以及DNS主机解析这类任务。

下面列举一些可以使用CFNetwork框架执行的任务:

  1. 使用BSD sockets
  2. 使用SSL或TLS创建加密连接
  3. 解析DNS主机
  4. 使用HTTP,校验HTTP以及HTTPS服务器
  5. 使用FTP服务器
  6. 发布、解析并浏览Bonjour服务。

# Core Data Framework

iOS3.0引入,Core Data框架是一种管理模型-视图-控制器应用程序数据模型的技术,它适用于数据模型已经高度结构化的应用程序。通过此框架,您再也不需要通过编程定义数据结构,而是通过Xcode提供的图形工具构造一份代表数据模型的图标。在程序运行的时候,Core Data框架就会创建并管理数据模型的实例,同时还对外提供数据模型访问接口。 通过Core Data管理应用程序的数据模型,可以极大程度减少编写的代码数量。

除此之外,Core Data还具有下述特征:

  1. 将对象数据存储在SQLite数据库以获得性能优化
  2. 提供NSFetchedResultsController类用于管理表视图的数据
  3. 管理undo/redo操作
  4. 属性值校验支持
  5. 支持对数据变化进行传播,并且不会改变对象间的关联
  6. 支持对数据进行归档,过滤,并支持对内存数据进行管理

# Core Foundation Framework

CoreFoundation框架是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。

下面列举该框架支持进行管理的数据以及可提供的服务:

  1. 群体数据类型(数组、集合等)
  2. 程序包
  3. 字符串管理
  4. 日期和时间管理
  5. 原始数据块管理
  6. 偏好管理
  7. URL及数据流操作
  8. 线程和RunLoop
  9. 端口和socket通讯

CoreFoundation 框架和 Foundation 框架紧密相关,它们为相同功能提供接口,但 Foundation 框架提供OC接口。如果您将 Foundation 对象和 Core Foundation 类型参杂使用,则可利用两个框架之间的 “toll-free-bridging” 。所谓的 Toll-free-bridging 是说您可以在某个框架的方法或函数同时使用 Core Foundation 和 Foundation 框架中的某些类型。很多数据类型支持这一特性,其中包括群体和字符串数据类型。每个框架的类和类型描述都会对每个对象是否为 toll-free bridged ,应和什么对象进行桥接进行说明。

# Core Location Framework

CoreLocation矿建可用于定位某个设备当前经纬度。它可以利用设备硬件特性,通过附近的GPS、蜂窝基站或者WiFi信号等信息计算用户方位。Maps应用程序就是利用此功能在地图上显示用户当前位置。您可以将此技术结合到应用程序中,以向用户提供访问信息。例如,应用程序课根据用户当前位置搜索附近饭店、商店或其他设施。

在iOS3.0系统中,该框架开始支持访问iOS设备的方向信息

在iOS4.0系统中,该框架开始支持低能耗的方位监视服务,该服务利用蜂窝基站跟踪用户方位。

# Core Media Framework

iOS4.0引入了Core Media框架,此框架提供AV Foundation框架使用的底层媒体类型。只有少数需要对音频或视频创建及展示,进行精确控制的应用程序才会涉及此框架,其他大部分应用程序都用不上。

# Core Motion Framework

Core Motion框架提供了一个单一的接口集,用于访问设备上所有基于运动的数据。这个框架提供了一系列Block接口来访问和处理原始或加工后的加速计数据。通过内置的陀螺仪,你可以检索原始数据、映射后的属性以及在设备上的旋转速率。你可以在游戏或者其他需要通过运动进行输入来提高用户体验的应用程序中使用加速计和陀螺仪。

# Core Telephony Framework

iOS4.0引入了Core Telephony框架,此框架为访问具有蜂窝无线的设备上的电话信息提供接口,应用程序可通过它获取用户蜂窝无线服务的提供商信息。如果应用程序对于电话呼叫感兴趣,也可以在相应事件发生时得到通知。

# Event Kit Framework

iOS4.0引入了Event Kit框架,此框架为访问用户设备的日历事件提供接口,您可以通过该框架访问用户日历中现有事件,可以增加新事件。日历事件可包含闹铃,而且可以配置闹铃激活规则。

iOS6添加了创建和访问用户设备上提醒的功能,你创建的提醒会通过“提醒”应用程序呈现出来。此外访问日历和提醒需要通过用户许可,应用程序要做好被拒绝访问此功能的准备,同样需要提供一个属性列表来描述需要访问的原因,以便得到用户许可。

# Foundation Framework

Foundation框架为Core Foundation框架的许多功能提供OC封装。您可以参考Core Foundation Framework了解前面对Core Foundation框架的描述。

Foundation框架为下述功能提供支持:

  1. 群体数据类型(数组、集合等)
  2. 程序包
  3. 字符串管理
  4. 日期和时间管理
  5. 原始数据块管理
  6. 偏好管理
  7. URL及数据流操作
  8. 线程和RunLoop
  9. Bonjour
  10. 通讯端口管理
  11. 国际化
  12. 正则表达式匹配
  13. 缓存支持

# Newsstand Kit Framework

iOS5引入了Newsstand框架,为用户提供了一个专属位置来阅读杂志和报纸。出版商可以在他们自己的应用程序使用Newsstand Kit框架将自己的报刊和杂志放在Newsstand里,它允许你在后台下载新的报刊和杂志,在你开始一个下载,系统会去处理下载操作,并通知你应用程序中有新的内容。

# Pass Kit Framework

iOS6引入,Pass Kit:使用web服务,一个新的文件格式,是OC层次上的框架,来实现通行证的下载。公司可以创建通行证代表物品,例如优惠券、登机牌、活动门票和折扣卡业务。相对于携带这些实实在在的物品,Pass Kit实现了将这些信息存储于iOS设备的功能,使用起来和实物是一样的效果。

通行证通过你公司的web服务创建,使用邮件、Safari或者你的程序传递到用户的iOS设备,通行证本身使用了一个特殊的文件格式并且会在传递之前先加密。通过文件格式来区别不同的服务,以便用户知道它是什么(优惠券、打折卡等)。它可能包含一个条码或者其他信息,你可以凭借它获取相应服务或者得到所需物品。

# Quick Look Framework

iOS4.0引入了Quick Look框架,应用程序可以用该框架预览无法直接支持查看的文件内容。如果应用程序从网络下载文件或者需处理来源未知的文件,则非常适合使用此框架。因为应用程序只要获得文件后,调用框架提供的视图控制器就可以直接在界面中显示文件的内容。

# Social Framework

iOS6.0引入了Social框架,提供了简单的接口访问用户社交媒体账户。这个框架替代了iOS5引入的Twitter框架,并且增加了其他社交账户的支持,包括FaceBook和新浪微博服务。用户可以使用这个框架通过用户账号发布新的状态和图片。这个框架和Accounts框架配合使用为用户提供一个单点登录(确保用户账号是允许访问的)。

# Store Kit Framework

iOS3.0引入Store Kit框架,此框架为iOS应用程序内购买内容或服务提供支持。例如,开发者可以利用此框架允许用户解锁应用程序的额外功能。或者假设您是一名游戏开发人员,则可使用此特性向玩家出售附加游戏关卡。在上述的两个情况中,Store Kit框架会处于交易过程和财务相关的事件,包括处理用户通过iTunes Store账号发出的支付请求并且向应用程序提供交易相关信息。

Store Kit框架主要关注交易过程中和财务相关的事务,目的是为了确保交易安全准确。应用程序需要处理交易事务的其他因素,包括购买界面和下载恰当的内容。通过这种任务划分方式,您就有用购买内容的控制权,可以决定希望展示给用户的购买界面以及何时向用户展示这些界面,同时也可以决定和应用程序最匹配的交付机制。

# System Configuration Framework

SystemConfiguration框架可用于确定设备的网络配置。您可以使用该框架判断WiFi或者蜂窝网络连接是否正在使用中,也可以用于判断某个主机服务是否可以使用。


# 三. 媒体层(Media)

提示

媒体层提供了图形、音频和视频技术支持,以达到移动设备上极佳的多媒体体验。

高品质图形是iOS应用程序非常重要的一部分,最简单(和最有效)的方法来创建一个应用程序是使用预渲染图片与UI标准控件结合实现系统绘制。然而,有些时候你可能需要一些稍微复杂的图形,你可以使用下面的技术来管理你的图形内容。

# Core Graphics Framework

Core Graphics(Quartz)处理本地2D矢量图形和基于图像的渲染

# Quartz Core Framework

Core Animation提供视图动画高级支持

# Core Image Framework

Core Image提供视频和静态图片的高级支持

# OpenGL ES Framework / GLKit Framework

OpenGL ES和GLKit 提供2D、3D硬件加速渲染接口

# Core Text Framework

Core Text提供了一个复杂的文本布局和渲染引擎

# Image I/O Framework

Image I/O提供大部分图像格式的读写接口。

# Assets Library Framework

Assets Library framework提供了在用户相册访问图片和视频的接口 在大多数情况下,应用程序运行在Retina屏设备上几乎不用对代码做任何修改。你画的任何内容会自动支持高分辨率屏幕。基于矢量的绘图代码,系统框架自动帮你完成了像素的填充。如果你在程序中使用了图片,系统自动帮你加载高分辨率图片。

无论你播放应用程序的电影文件还是网络上的视频流,iOS提供了几种播放视频内容的技术。设备的硬件可以捕获视频并且应用到你的程序中。

下面的框架列表是按从高到低顺序列举的。

# UIImagePickerController

UIImagePickerController类提供了使用设备录像的接口。

# Media Player Framework

Media Player Framework提供了一系列简单易用呈现全屏或者小屏视频的接口。

# AV Foundation Framework

AV Foundation Framework提供了一些列OC接口用于管理捕获或者播放视频。

# Core Media Framework

Core Media 描述了高层框架使用的底层数据类型,提供了低层接口操作媒体。

# 播放文件类型

iOS支持播放以下后缀的文件:.mov、.mp4、、m4v、.3gp

# 压缩标准

H.264 视频: 最高达1.5Mbps,640x480像素,每秒30帧。低复杂度版本的H.264基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀 H.264 视频: 最高达768Kbps,320x240像素,每秒30帧。基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀 MPEG-4视频: 最高达2.5Mbps,640x480像素,30帧每秒,基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀

# AirPlay

AirPlay 是一中能让你应用程序的音频流在Apple TV或者其他第三方的扬声器或者接收器上播放的技术。AV Foundation框架和Core Audio都内置了AirPlay。使用上述框架,一旦你选择使用AirPlay播放音频,都会被系统自动处理以及转换。

在iOS5里,用户可以AirPlay将iPad2上的内容映射到Apple TV2上。开发者可以创建UIScreen对象通过AirPlay展示不同的内容到iPad2上。iOS5同样提供了多种方式通过AirPlay传递内容,包括使用AV Foundation Framework中的 AVPLayer以及UIKit的中的UIWebView,此外,Media Player Framework支持显示 “正在播放”信息在多个地方。——-AirPlay OverView。

# AV Foundation Framework

iOS2.2中引入,框架包含了 用于播放音频内容的OC类。你可以使用这些类播放任意时长的 基于文件或者内存的音频。你可以同事播放多个声音,可以控制每个声音的各个方面。iOS3.0之后,这个框架还可以录制音频以及管理音频会话。iOS4.0之后,这个框架的服务扩大到了:

  • 媒体资源管理
  • 媒体编辑
  • 电影捕捉
  • 电影回放
  • 跟踪管理
  • 媒体元素据管理
  • 立体声
  • 精确同步声音
  • 一个OC接口来确定声音的文件信息,例如数据格式,采样率,和声道数量。

iOS5以后,AV Foundation Framework包含了 支持通过AirPlay播放音频、视频流的类AVPlayer。AirPlay默认是启用的,但可以根据需要设置开启或关闭。

AVFoundation Framework 是iOS中单独来录制和播放音频、视频的框架,相对于高级框架,在处理以及管理媒体资源上,提供了更为完美的支持 。

# Core Audio

本地音频是有Core Audio家族一些列框架支持的。

Core Audio是一个基于C的接口,支持操作立体声音频,你可以使用Core Audio在iOS应用程序中生成、录制、混合以及播放音频。你还可以使用Core Audio来触发手机设备的震动功能。

# Core Graphics Framework

CoreGraphics framework包含Quartz 2D绘图API接口。Quartz是OSX中先进的、基于矢量绘图引擎。它提供了支持基于路径图,反锯齿的渲染、渐变、图片、颜色、坐标空间转换和PDF文档创建、显示和解析。虽然API是基于C的,但是却采用了基于对象的方式抽象了画图对象,使它更容易存储和重用你的图像内容。

# Core Image Framework

iOS5引入,提供了一套强大的内置过滤器用于操作视频和静态图片。你可以使用内置的过滤器实现简单的操作(触摸纠正照片)以及高级的操作(面部检测)。使用这些过滤器的优势是,它们在以无损的方式运作,保证你的原始图像是不会改变。此外,Core Image利用可用的CPU和GPU处理能力,确保操作是快速有效的。

CIImage类提供了访问标准过滤器的方法,你可以使用它来提高照片的质量。创建其他类型的过滤器,你可以创建和配置一个CIFilter对象实现你需要的过滤器。

# Core MIDI Framework

iOS4.2引入,提供了标准的方法与MIDI设备通信,包括硬件键盘和合成器。你用这个框架来发送和接收MIDI的消息以及与能连接到iOS设备的设备交互(通过网路相连或者桥接器)。

# Core Text Framework

iOS3.2引入,包含一组简单的、高性能的基于C的接口布局文本和处理文字。Core Image framework提供了一个完整的文本布局引擎,您可以管理文本在屏幕上的位置,你管理的文本可以使用不同的字体以及渲染属性。 这个框架主要用于处理复杂文本,比如文本处理程序。如果你的应用程序只需要简单的文本输入和显示,你应该继续使用UIKit中的文本类。

# Core Video Framework

iOS4引入,提供接口导入和导出图像数据和图像元素据,这个框架利用Core Graphics数据类型和函数支持所有iOS上可用的图像类型。

iOS6之后,你可以使用这个框架来访问IPTC、EXIF元素据属性和图像。

# GLKit Framework

iOS5引入,包含一组基础工具类,简化了创建OpenGL ES2.0程序。GLKit支持四个关键领域的应用开发:

  • GLKView和GLKViewController提供一个标准的实现视图和关联启用OpenGL ES的渲染循环。视图管理层framebuffer对象代表应用程序,你的程序只需要往上面画。
  • GLKTextureLoader提供了图像转换和加载程序到您的应用程序,让它自动加载纹理图像到你的上下文,它可以同步或一部加载纹理。异步加载纹理时,您的应用程序提供了完成处理block,当你的被加载到上下文的时候触发。
  • 框架提供了实现GLKit向量、矩阵、四元素以及矩阵堆栈操作,提供相同的功能在Open GL ES 1.1中
  • GLKBaseEffect、GLKSkyboxEffect和GLKReflectionMapEffect类提供现有的、可配置的图形着色器,实现常用的图形操作。特别是在OpenGL ES 1.1规范中,GLKBaseEffect类实现了照明和素材模型,简化了从OpenGL ES1.1到OpenGL ES 2.0迁移所需的工作。

# Media Player Framework

提供播放音频和视频内容高层支持,你可以使用系统标准接口播放视频。

在iOS3.0,增加对用户iTunes音乐库的访问支持,你可以播放单个音乐和音乐列表,搜索歌曲以及呈现媒体选择界面给用户。 在iOS3.2,增加了视频窗口的大小调整接口(以前视频只能是全屏的)。此外,增加了众多的接口来配置和管理电影的播放。 在iOS5,增加了“正在播放”信息在锁屏界面。这些信息可以通过AirPlay显示在Apple TV上。还有接口能监测视频是否正在使用AirPlay显示。

# Quartz Core Framework

包含Core Animation接口,Core Animation是一个先进的动画合成技术,优化渲染路径来实现复杂的动画和视觉效果。它提供了一个高层次的OC接口(使用硬件性能)来配置动画效果,你可以使用OC接口创建自定义的动画。


# 四. 可触摸层(Cocoa Touch)

提示

这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作,主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图。

# Address Book UI framework

OC接口,提供创建新联系人、编辑以及选择已存在联系人。——-Address BookProgramming Guide for iOS Address Book UI Framework Reference foriOS

# Event Kit UI framework(iOS4)

展示以及编辑日历相关的事件 标准系统控件。——Event Kit UI Framework Reference

# Game Kit framework(iOS3)

允许你的程序添加点对点的网络,提供点对点连接以及游戏内语音。尽管这些特性多见于多人玩的网络游戏里,你同样可以把它们加入到你的应用程序中。iOS4.1之后,添加了新内容:

  • 用户可以创建别名
  • 排行榜
  • 安排比赛
  • 允许你记录player在你游戏里的进度
  • 发起挑战(iOS6之后)
  • 支持回合制游戏

# iAd framework(iOS4)

允许应用程序发布 横幅 广告。可以将广告放入标准视图中,视图本身基于苹果广告的服务自动管理加载、呈现以及响应点击。——-iAd Programming Guide iAd Framework Reference

# Map Kit framework(iOS3)

提供可以滑动的地图视图,可以使用地图提供方向或者显示自己感兴趣的点,同样可以添加标注(自定义图片或者内容),iOS4之后,mapview添加了拖拽注解以及自定义浮层(比如加乘车路线),iOS6之后,你可以创建寻路程序,当用户请求公交有关的方向,地图应用程序允许用户自己程序获取路线,除此之外,所有的应用都可以调用地图程序显示POI信息——-Location AwarenessProgramming Guide Map Kit Framework Reference

# Message UI framework(iOS3)

提供标准短信和邮件界面,而且可以预置字段信息。——-Message UI FrameworkReference

# Twitter framework

iOS6后 Twitter framework被Social framework替代,提供了UI以及URL访问twitter服务。在iOS5里,你可以使用Twitter framework生成twitter请求以及发送信息。

# UIKit framework

iOS最基础的框架,包含了图形、事件等。

  • 应用程序管理
  • 用户界面管理,包括支持storyboard以及nib文件
  • 图形和窗口支持,支持多显示
  • 支持多任务
  • 支持打印
  • 支持自定义控件外观(iOS5)
  • 支持控制器包含其他控制器内容(iOS5)
  • 触摸以及晃动事件处理
  • 提供标准视图和控件
  • 支持文本和网页内容
  • 剪切、复制和粘贴
  • 动画
  • 访问其他应用程序
  • 残疾人士的辅助功能
  • 远程通知
  • 本地通知
  • PDF创建
  • 支持自定义输入view取代系统键盘
  • 支持键盘上方添加视图
  • 支持多种分享:email,twitter、Facebook以及其他服务
  • 加速计
  • 照相机
  • 相册
  • 设备信息获取
  • 电池状态
  • 接近传感器
  • 远程控制