iOS操作系统架构

2019-03-222901

iOS操作系统架构

为了便于加深对iOS开发的理解,不止停留于表面,在此“深究”一下iOS系统架构。

iOS系统架构分下面四层,每层都建立在它的下面一层基础之上。其实iOS和Mac OS的系统架构层次是几乎相同的,区别是Mac OS最上层为Cocoa,iOS最上层为Cocoa Touch。

身为iOS开发,当然只说重点——iOS系统框架,从最底一层开始介绍:

Core OS layer

Core OS layer即核心操作系统层。这一层是一个Unix核心,包含、提供了整个iOS的一些基础功能,其中System级包含许多访问操作系统底层功能的接口集,支持如下功能:

  • 内存管理;
  • 数学计算;
  • 多任务(POSIX线程和GCD);
  • 文件系统存取;
  • 网络(BSD Socket);
  • 标准I/O;
  • 位置信息;

应用通过LibSystem库访问这些功能。

Core Services layer

Core Services layer即核心服务层。它是在下面一层Core OS层的基础上提供了更丰富的功能。列举出来有:Security Framework;Core Location Framework;SQLite;AddressBook.Framework;CFNetwork;CoreFoundation.Framework;Foundation.Framework等等。

这些服务中的核心是CoreFoundationFoundation框架,定义了所有应用使用的基本类型。

  • CoreFoundation为核心基础框架,是基于C语言的接口集,提供iPhone应用的基本数据管理和服务功能,包括常见数据类型,字符串,资源管理及偏好设置等

    • 集合数据类型(数组、集合等等);
    • 应用打包Bundles;
    • 字符串管理;
    • 日期和时间管理
    • 原始数据块管理
    • Preferences管理;
    • URL和Stream操作;
    • 线程和Run Loops;
    • 端口和Socket通信;

    核心基础框架与基础框架是紧密相关的,它们为相同的基本功能提供了Objective-C接口。如果开发者混合使用Foundation Objects 和Core Foundation类型,就能充分利用存在两个框架中的"toll-free bridging"。toll-free bridging意味着开发者能使用这两个框架中的任何一个的核心基础和基础类型,例如Collection和字符串类型等。每个框架中的类和数据类型的描述注明该对象是否支持toll-free bridged。如果是,它与哪个对象桥接(toll-free bridged)。

  • Foundation框架是以Core Foundation框架为基础创建的,提供Core Foundation框架提供的许多功能的Objective-C封装,我们主要用于:

    • NSString
    • NSArray和NSDictionary(只能存对象)
    • NSNumber(可以将基本数据类型封装成对象)
    • NSData
    • NSValue(可以封装任意值)
    • NSNull
    • 操作URL
    • 执行异步代码

    这就是我们iOS开发主要使用的框架之一,而且基本所有框架都是建立在Foundation框架上的。

Media layer

Media layer即媒体层。顾名思义,Media层提供了图片,音乐,影片等多媒体功能。通过它我们可以使用各种媒体文件,可以绘制图形,制作动画以及音频视频录制

图像分为2D图像和3D图像, 前者由Quartz2D来支持,后者则是用OpenGL ES。与音乐对应的模组是Core Audio和OpenAL, Media Player 实现了影片的播放, 而最后还提供了Core Animation来对强大动画的支持。

其中,我们最终看到的界面显示都是图层混合的结果,就是我们常见的CALayer,它是属于Quartz Core的。

Cocoa Touch layer

Cocoa Touch layer即可触摸层。是最上一层,它是Objective-C的API, 其中最核心的部分是UIKit.Framework,应用程序界面上的各种组件,全是由它来提供呈现的,除此之外它还负责处理屏幕上的多点触摸事件,文字的输出,图片,网页的显示,相机或文件的存取,以及加速感应的部分等。

其中UIKit就是我们iOS主要只用的框架之二!与Foundation一起是我们iOS开发最常用的框架。

UIKit提供了用户界面层使用的类和方法,UIKit框架类组织架构图如下:

分享
点赞2
打赏
上一篇:iOS 中 Widget 的实现 | 实战系列
下一篇:iOS初级开发学习笔记:APP生命周期的学习总结