认识iOS系统架构

关于本文:

文章主要介绍iOS系统架构中的四层结构的内容、常用的框架、大致的功能,然后对iOS开发人员的发展提出自己的一些拙见。


一、iOS系统是基于UNIX系统,所有从系统稳定性上来说的确比其他操作系统的产品要好。

iOS在系统架构上分为4层,由上到下依次为:触摸层(Cocoa Touch Layer)、媒体层(Media Layer)、核心服务层(Core Services)、核心系统层(Core OS),每个层级提供不同的服务。低层级结构提供基础服务,比如文件系统、内存管理、I/O操作等。高层级结构建立在低层结构之上提供具体的服务,比如UI控件、文件访问等。

这样的关系也就相当于AFNetworking将系统提供的网络相关框架进行了封装。对于绝大多数软件开发人员来说,AFNetworking的出现的确是节约了不少的时间与精力,这就是提倡高级语言快速编程的原由之一。插播一条广告:import在手,天下我有~说的就是python。

那是不是AFNetworking可以替代系统网络框架呢?当然不是,首先“下层基础决定上层建筑”,再者,通过我下面摘抄的一段话各自体会:

很显然,如果你唯一在意的是加速度或者赛道上的圈速,
那么优酷和土豆上已经有无数的对比视频证明那些换挡速度以毫秒计的双离合拥有绝对的胜算。
但回到复杂的日常驾驶环境中,
手动变速器却在很多情形下有着哪怕世界上最先进的自动变速器都难以比拟的响应力。
所以下一次当你需要在自动挡和手动挡之间做出选择的时候,
如果“便利性”不是占据决定性的诉求时,
或许你该好好的考虑以下,
是否应该轻易的放弃那种配备离合器踏板的变速器。

二、触摸层(Cocoa Touch Layer)

触摸层主要提供用户交互相关的服务,比如界面控件、事件处理、通知中心、地图,包含以下框架:

UIKit-----界面相关

EventKit-----日历事件提醒等

Notification Center-----通知中心

MapKit-----地图显示

Address Book-----联系人

iAd-----广告

Message UI-----邮件与SMS显示

PushKit-----iOS8新push机制

三、媒体层(Media Layer)

媒体层主要提供图像引擎、音频引擎、视频引擎框架。

图像引擎(Core Graphics、Core Image、Core Aniation、OpenGL ES)

音频引擎(Core Audio、AV Foundation、OpenAL)

视频引擎(AV Foundation、Core Media)

四、核心服务层(Core Services Layer)

核心服务层为程序提供基础的系统服务,例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架:

CFNetworking(网络访问)

Core Data(数据存储)

Core Location(定位功能)

Core Motion(重力加速度,陀螺仪)

Foundation(基础功能,如NSString)

WebKit(浏览器引擎)

JavaScript(JavaScript引擎)

五、核心系统层(Core OS Layer)

核心系统层提供为上层结构最基础的服务,如操作系统内核服务、本地认证、安全、加速等。

操作系统内核服务(BSD sockets、I/O访问、内存申请、文件系统、数学计算等)

本地认证(指纹识别验证等)

安全(提供管理证书、公钥、密钥等的接口)

加速(执行数学、大数字以及DSP运算,这些接口iOS设备硬件匹配)

六、常用的iOS的SDK框架

简介如下:

Accelerate.framework 包含加速数学和DSP函数。

AddressBook.framework 包含直接访问用户联系人数据库的函数。

AddressBookUI.framework 包含显示系统定义的联系人挑选界面和编辑界面的类。

AssetsLibrary.framework 包含显示用户照片和视频的类

AudioToolbox.framework 包含处理音频流数据以及播放或录制音频的接口。

AVFoundation.framework 包含播放或录制音频的Objective-C接口。

AudioUnit.framework 包含加载并使用音频单元的接口。

CFNetwork.framework 包含通过WiFi或者蜂窝无线访问网络的接口。

CoreAudio.framework 包含Core Audio框架使用的各种数据类型。

CoreData.framework 包含管理应用程序数据模型的接口。

CoreFoundation.framework 提供一些基本软件服务,包括常见数据类型抽象、字符串实用工具、群体类型实用工具、资源管理以及偏好设置。

CoreGraphics.framework 包含Quartz 2D接口。

CoreLocation.framework 包含确定用户方位信息的接口。

CoreMedia.framework 包含操作音频和视频的底层例程。 

CoreMotion.framework 包含访问加速度计以及陀螺仪的数据的接口。

CoreTelephony.framework 包含访问电话相关的信息的例程。

CoreText.framework 包含一个文本的布局渲染引擎。

CoreVideo.framework 包含操作音频和视频的底层例程。

EventKit.framework 包含访问用户日历事件数据的接口。 

EventKitUI.framework 包含显示标准系统日历界面的类。

ExternalAccessory.framework 包含与外设进行通讯的接口。

Foundation.framework 包含Cocoa Foundation层的类和方法。

GameKit.framework 包含点对点连接管理接口。

iAd.framework 包含在应用程序中显示广告的类。

ImageIO.framework 包含读取或写入图像数据的类。

IOKit.framework 包含设备所使用的接口。

MapKit.framework 包含将地图界面嵌入到应用程序的类,也可以用于查找地理编码反向坐标。

MediaPlayer.framework 包含显示全屏视频的接口。

MessageUI.framework 包含撰写和排队发送电子邮件信息的界面。

MobileCoreServices.framework 定义系统支持的统一类型标识符(UTIs)。

OpenAL.framework 包含OpenAL接口。OpenAL是一个跨平台的方位音频库。

OpenGLES.framework包含OpenGL ES接口。OpenGL ES框架是OpenGL跨平台2D和3D渲染库的跨平台版本。

QuartzCore.framework 包含Core Animation接口。。

QuickLook.framework 包含预览文件接口。

Security.framework 包含管理证书、公钥私钥以及信任策略的接口。

StoreKit.framework 包含用于处理与应用程序内购买相关的财务交易。

SystemConfiguration.framework 包含用于处理设备网络配置的接口。

UIKit.framework 包含iOS应用程序用户界面层使用的类和方法。

~OVER

原文地址:https://www.cnblogs.com/cchHers/p/8831327.html