了解更多IOS底层原理知识,关注腾讯课堂八点钟学院IOS高级开发
IOS学习交流群 431449751;
1.1.1
iOS的系统架构分为四个层次:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)。图1-1展示了Mac OS X和iOS系统架构层次的一个对比。
|
图1-1 |
从上图中我们可以发现Mac OS X与iOS的系统架构层次只有最上面一层不同,由Cocoa框架换成了Cocoa Touch,因此开发iOS应用程序与开发Mac OS X程序是相似的,现在就让我们来具体看看每层所包含的内容。
其实iOS是基于UNIX的,所以我们完全可以相信这个操作系统,要知道从系统的稳定性上来说它要比其他操作系统的产品好很多。
位于iOS系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。核心操作系统层包括以下这些组件:
OS X Kernel
Sockets
Keychain
Bonjour
第二层是核心服务层,我们可以通过它来访问iOS的一些服务。它包括以下这些组件:
Collections
File Access
Net Services
URL Utilities
第三层是媒体层,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。它包括以下这些组件:
Core Audio
Audio Recording
PDF
OpenGL ES
最上面一层是可触摸层,这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。它包括以下这些组件:
Multi-Touch Events
View Hierarchy
Web Views
在Cocoa Touch层中的很多技术都是基于Objective-C语言的。Objective-C语言为iOS提供了像集合、文件管理、网络操作等支持。像UIKit框架,它为应用程序提供了各种可视化组件,比如像窗口(Window)、视图(View)和按钮组件(UIButton)。Cocoa Touch层中的其他框架,对我们在应用程序中的开发来说也是非常有用的,如访问用户通信录功能框架、获取照片信息功能的框架、负责加速感应器和三维陀螺仪等硬件支持的框架。
1.1.2
什么是框架?本质上来说它是帮助我们完成各种特定功能的软件库。
我们编写的应用程序项目,都是从Cocoa Touch层开始的,具体来说就是从UIKit Framework开始的。当在编写程序的过程中需要用到一些特殊功能的时候,我们应该从框架的最顶端技术开始寻找相应的框架,只有在上层结构无法解决时,才能使用其下层的技术。其实,顶层的框架已经涵盖了我们绝大多数需要的功能。
表1-1列出了一些常用的iOS SDK框架。
表1-1
框架名称 | 功 |
AddressBook.framework | 提供访问存储核心数据库中用户联系人信息的功能 |
AddressBookUI.framework | 提供一个用户界面,用于显示存储在地址簿中的联系人信息 |
AudioToolbox.framework | 提供音频录制和回放的底层API,同时也负责管理音频硬件 |
AudioUnit.framework | 提供一个接口,让我们的应用程序可以对音频进行处理 |
AVFoundation.framework | 提供音频录制和回放的底层API,同时也负责管理音频硬件 |
CFNetwork.framework | 访问和配置网络,像HTTP、FTP和Bonjour Services |
CoreFoundation.framework | 提供抽象的常用数据类型,如 |
CoreGraphics.framework | 提供2D绘制的基于C的API |
续表
框架名称 | 功 |
CoreLocation.framework | 使用GPS和Wi-Fi获取位置信息 |
Foundation.framework | 提供Object-C的基础类(像NSObject)、 基本数据类型和操作系统服务等 |
GameKit.framework | 为游戏提供网络功能;点对点互联和游戏中的语音交流 |
MapKit.framework | 为应用程序提供内嵌地图的接口 |
MediaPlayer.framework | 提供播放视频和音频的功能 |
MessageUI.framework | 提供视图控制接口用以处理E-mail和短信 |
OpenGLES.framework | 提供简洁而高效的绘制2D和3D图形的OpenGL API子集 |
QuartzCore.framework | 提供动画特效以及通过硬件进行渲染的能力 |
StoreKit.framework | 为应用程序提供在程序运行中消费的支持 |
SystemConfiguration.framework | 检测当前网络是否可用和硬件设备状态的能力 |
UIKit.framework | 创建和管理应用程序的用户界面 |