iOS应用程序基于Foundation和UIKit框架
iOS 的系统架构分为四个层次:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)
Foundation框架
为所有的应用程序提供基本系统服务,UIKit和其它的框架都是建立在Foundation框架上面的。
功能:
创建和管理集合,比如数组和字典;
访问存储在应用程序里的图片和其它资源;
创建和管理字符串;
提交和接收通知;
创建日期和时间对象;
自动发现IP网络上的设备;
操作URL流;
执行异步代码;
UIKit框架
提供创建基于触摸用户界面的类,UIKit提供了在屏幕上绘制的机制,捕获事件,和创建通用用户界面元素。
功能:
构建和管理你的用户界面
捕获触摸和基于移动的事件
呈现文字和web内容
优化你的多任务程序
创建定制的用户界面元素
Core Data框架
管理应用程序数据模型,Core Data提供的内建SQLlite技术可以高效的管理数据。
功能:
在库里存储和接收对象
提供基本的undo/redo
自动验证属性值
过滤、分组和优化内存中的数据
用[NSFetchedResultsController]管理表视图中的结果
支持基于文档的应用程序
Core Graphics框架
在iOS中最简单且最快捷的创建图形的方式是使用UIKit框架提供的基于预渲染图形的视图和控 件,然后让UIKit和iOS完成绘制。但是当你需要创建复杂的图形时,Core Graphics则提供了更底层的库来帮助你。
功能:
创建基于路径的绘图
抗锯齿渲染
添加梯度、图片和颜色
Use coordinate-space transformations.
创建、显示和分析PDF文档
Core Animation框架
创建高级的动画和虚拟效果
功能:
创建定制动画
添加定时函数和图形
支持帧动画
Specify graphical layout constraints.
Group multiple-layer changes into anatomic update.
OpenGL ES 框架提供2D和3D绘图工具
OpenGL ES支持2D和3D绘图,Apple的OpenGL ES实现通过硬件提供了高速的全屏游戏式的应用程序。
功能:
创建2D和3D图形
创建更复杂的图形,比如数据虚拟化、模拟飞行,或者视频游戏
访问底层图形设备
CFNetwork框架(CFNetwork.framework)
是一组高性能的C语言接口集,提供网络协议的面向对象的抽象。开发者可以使用 CFNetwork框架操作协议栈,并且可以访问低层的结构如BSD Sockets等。同时,开发者也能简化与FTP和HTTP服务器的通信,或解析DNS等任务。使用CFNetwork框架实现的任务如下所示:
- BSD Sockets;
- 利用SSL或TLS创建加密连接;
- 解析DNS Hosts;
- 解析HTTP协议,鉴别HTTP和HTTPS服务器;
- 在FTP服务器工作;
- 发布、解析和浏览Bonjour服务。
iAd 框架
iOS 4.0引入了iAd框架 (iAd.framework
)。您可以通过该框架在应用程序中发布横幅广告。广告会被放入到标准视图,您可以将这些视图加入到用户界面,并在合适的时机向用户展现。这些视图和苹果的公告服务相互协作,自动处理广告内容的加载和展现,同时也可以响应用户对广告的点击。
AV Foundation 框架
iOS 2.2引入了AV Foundation 框架 (AVFoundation.framework
),该框架包含的Objective-C 类可用于播放音频内容。通过使用该框架,您可以播放声音文件或播放内存中的音频数据,也可以同时播放多个声音,并对各个声音的播放特定进行控制。
在 iOS 4.0及后续版本中,该框架提供的服务得到很大的扩展,下述的服务现在也包含在框架中:
-
媒体资产管理
-
媒体编辑
-
电影捕捉
-
电影播放
-
曲目管理
-
媒体项的元数据管理
-
立体声淘选
-
不同声音的精确同步
-
用于判断声音文件详细信息的Objective-C接口,例如判断数据格式、采样率和声道数。
AV Foundation框架是iOS中录制播放音频和视频的唯一框架,该框架还支持对媒体项进行管理和处理。
MediaPlayer 框架
为应用程序播放视频和音频内容提供高级支持。通过该框架,您就可以使用标准系统界面播放视频。 iOS 3.0增加了对访问用户iTune库的支持。因此,您可以利用该框架播放音乐曲目、播放列表、搜索歌曲并向用户显示媒体选取界面。
Core Media框架
它对较高级框架使用的底层类型进行描述,同时也提供一些底层接口,它们用于对媒体进行处理。
iOS视频技术支持播放的电影文件应具有.mov
、.mp4
、.m4v
以及.3gp
文件扩展名,而且文件应使用下述的压缩标准:
-
H.264视频,多达1.5 Mbps, 640x480像素,每秒30帧。 H.264 Baseline Profile 的 Low-Complexity 版本支持 AAC-LC 音频(
.m4v
、.mp4
以及.mov
文件格式中高达160Kbps ,48KHz 的立体音频)。 -
H.264视频,高达68 Kbps,320x240像素,每秒30帧。达到Level 1.3的 Baseline Profile支持AAC-LC音频(
.m4v
、.mp4
以及.mov
文件格式中高达160Kbps ,48KHz 的立体音频)。 -
MPEG-4视频,高达 2.5 Mbps, 640 x 480像素,每秒30帧。Simple Profile支持AAC-LC 音频(
.m4v
、.mp4
以及.mov
文件格式中高达160Kbps ,48KHz 的立体音频)。 -
各种音频格式,包括 “音频技术”列出的清单。
-
表 B-1 设备中的框架 名称
最先引入
前缀
描述
Accelerate.framework4.0
cblas
,
vDSP包含加速数学和DSP函数。 请查看 加速框架参考 。
AddressBook.framework2.0
AB包含直接访问用户联系人数据库的函数。请查看地址簿框架参考。
AddressBookUI.framework2.0
AB包含显示系统定义的联系人挑选界面和编辑界面的类。请查看iOS地址簿UI框架参考 。
AssetsLibrary.framework4.0
AL包含显示用户照片和视频的类,请查看资源库框架参考 。
AudioToolbox.framework2.0
AU
,
Audio包含处理音频流数据以及播放或录制音频的接口。请查看音频工具箱框架参考。
AudioUnit.framework2.0
AU
,
Audio包含加载并使用音频单元的接口。请查看音频单元框架参考.
AVFoundation.framework2.2
AV包含播放或录制音频的Objective-C接口。请查看AV Foundation框架参考.。
CFNetwork.framework2.0
CF包含通过WiFi或者蜂窝无线访问网络的接口。请查看CFNetwork框架参考。
CoreAudio.framework2.0
Audio包含Core Audio框架使用的各种数据类型。请查看Core Audio 框架参考 。
CoreData.framework3.0
NS包含管理应用程序数据模型的接口。请查看Core Data 框架参考 。
CoreFoundation.framework2.0
CF提供一些基本软件服务,包括常见数据类型抽象、字符串实用工具、群体类型实用工具、资源管理以及偏好设置。请查看rovCore Foundation框架参考。
CoreGraphics.framework2.0
CG包含Quartz 2D接口。请查看Core Graphics 框架参考 。
CoreLocation.framework2.0
CL包含确定用户方位信息的接口。请查看Core Location 框架参考。
CoreMedia.framework4.0
CM包含操作音频和视频的底层例程。请查看Core Media 框架参考。
CoreMotion.framework4.0
CM包含访问加速度计以及陀螺仪的数据的接口。请查看Core Motion 框架参考。
CoreTelephony.framework4.0
CT包含访问电话相关的信息的例程。请查看Core Telephony 框架参考。
CoreText.framework3.2
CT包含一个文本的布局渲染引擎。请查看Core Text参考集.。
CoreVideo.framework4.0
CV包含操作音频和视频的底层例程。请不要直接使用该框架。
EventKit.framework4.0
EK包含访问用户日历事件数据的接口。请查看Event Kit 框架参考。
EventKitUI.framework4.0
EK包含显示标准系统日历界面的类。请查看Event Kit UI 框架参考。
ExternalAccessory.framework3.0
EA包含与外设进行通讯的接口。请查看External Accessory 框架参考。
Foundation.framework2.0
NS包含Cocoa Foundation层的类和方法。请查看Foundation 框架参考。
GameKit.framework3.0
GK包含点对点连接管理接口。请查看Game Kit 框架参考。
iAd.framework4.0
AD包含在应用程序中显示广告的类。请查看iAd 框架参考。
ImageIO.framework4.0
CG包含读取或写入图像数据的类。请查看Image I/O 参考集。
IOKit.framework2.0
N/A
包含设备所使用的接口。请不要直接使用此框架。
MapKit.framework3.0
MK包含将地图界面嵌入到应用程序的类,也可以用于查找地理编码反向坐标。请查看Map Kit框架参考。
MediaPlayer.framework2.0
MP包含显示全屏视频的接口。请查看Media Player 框架参考。
MessageUI.framework3.0
MF包含撰写和排队发送电子邮件信息的界面。请查看Message UI 框架参考。
MobileCoreServices.framework3.0
UT定义系统支持的统一类型标识符(UTIs)。
OpenAL.framework2.0
AL包含OpenAL接口。OpenAL是一个跨平台的方位音频库。如需进一步了解,请访问http://www.openal.org。
OpenGLES.framework2.0
EAGL
,
GL包含OpenGL ES接口。OpenGL ES框架是OpenGL跨平台2D和3D渲染库的跨平台版本。请查看OpenGL ES 框架参考。
QuartzCore.framework2.0
CA包含Core Animation接口。请查看Quartz Core 框架参考。
QuickLook.framework4.0
QL包含预览文件接口。请查看Quick Look 框架参考。
Security.framework2.0
CSSM
,
Sec包含管理证书、公钥私钥以及信任策略的接口。请查看Security框架参考。
StoreKit.framework3.0
SK包含用于处理与应用程序内购买相关的财务交易。请查看 Store Kit 框架参考。
SystemConfiguration.framework2.0
SC包含用于处理设备网络配置的接口。请查看System Configuration框架参考。
UIKit.framework2.0
UI包含iOS应用程序用户界面层使用的类和方法。请查看UIKit 框架参考。