iOS 系统架构
iOS 系统分为可分为四级结构,由上至下分别为可触摸层(Cocoa Touch Layer)、媒体层(Media Layer)、核心服务层(Core Services Layer)、核心系统层(Core OS Layer),每个层级提供不同的服务。低层级结构提供基础服务如文件系统、内存管理、I/O 操作等。高层级结构建立在低层级结构之上提供具体服务如 UI 控件、文件访问等。
iOS 8.3 系统框架架构图可触摸层(Cocoa Touch Layer)
大部分与用户界面有关,本质上来说它负责用户在 iOS 设备上的触摸交互操作。这一层基本都是基于 Objective-C 的接口。可触摸层主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含以下框架:
UIKit(界面相关)
EventKit(日历事件提醒等)
Notification Center(通知中心)
MapKit(地图显示)
Address Book(联系人)
iAd(广告)
Message UI(邮件与 SMS 显示)
PushKit(iOS8 新 push 机制)
媒体层(Media Layer)
通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。这一层既有基于 Objective-c 的接口也有基于 C 语言的接口。媒体层主要提供图像引擎、音频引擎、视频引擎框架:
图像引擎(Core Graphics、Core Image、Core Animation、OpenGL ES)
音频引擎 (Core Audio、 AV Foundation、OpenAL)
视频引擎(AV Foundation、Core Media)
核心服务层(Core Services Layer)
可以通过它来访问 iOS 的一些服务。基本都是基于 C 语言的接口。核心服务层为程序提供基础的系统服务例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架:
CFNetwork(网络访问)
Core Data(数据存储)
Core Location(定位功能)
Core Motion(重力加速度,陀螺仪)
Foundation(基础功能如 NSString)
Webkit(浏览器引擎)
JavaScript(JavaScript 引擎)
核心系统层(Core OS Layer)
它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。作为 App 开发者不需要与这一层打交道。基本都是基于 C 语言的接口。核心系统层提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等。
操作系统内核服务(BSD sockets、I/O 访问、内存申请、文件系统、数学计算等)
本地认证(指纹识别验证等)
安全(提供管理证书、公钥、密钥等的接口)
加速 (执行数学、大数字以及 DSP 运算,这些接口 iOS 设备硬件相匹配)
在上面所有的框架中,最重要也最经常使用的就是 UIKit 和 Foundation 框架。
Foundation 框架提供许多基本的对象类和数据类型,使其成为应用程序开发的基础,为所有应用程序提供最基本的系统服务,和界面无关。
UIKit 框架提供的类是基础的UI类库,用于创建基于触摸的用户界面,所有 iOS 应用程序都是基于 UIKit,它提供应用程序的基础架构,用于构建用户界面,绘图、处理和用户交互事件,响应手势等等。UIKit 通过控制器对象管理屏幕上显示的内容,界面的跳转,来组织应用程序。没有 UIKit 框架就没有 iOS 应用程序。