iOS整体框架介绍
这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战
iOS整体框架
通常我们称iOS的框架为cocoa框架. 话不多说,官方的整体框架图如下:
简单解释一下:
- Cocoa (Application) Layer(触摸层)
- Media Layer (媒体层)
- Core Services Layer(核心服务层)
- Core OS Layer (核心系统操作层)
- The Kernel and Device Drivers layer(内核和驱动层)
注:Cocoa (Application) Layer(触摸层)其实包含cocoa Touch layer(触摸层) 和Application Layer (应用层).应用层原本在触摸层上面,因为应用层是开发者自己实现,所以和触摸层合在一起.
其实每一层都包含多个子框架, 如下图:
简单解释下(瞄一眼就得了):
Cocoa Touch Layer:触摸层提供应用基础的关键技术支持和应用的外观。如
NotificationCenter
的本地通知和远程推送服务,iAd
广告框架,GameKit
游戏工具框架,消息UI
框架,图片UI
框架,地图框架,连接手表框架,UIKit
框架、自动适配等等Media Layer:媒体层提供应用中视听方面的技术,如图形图像相关的
CoreGraphics,CoreImage,GLKit,OpenGL ES,CoreText,ImageIO
等等。声音技术相关的CoreAudio,OpenAL,AVFoundation
,视频相关的CoreMedia,Media Player
框架,音视频传输的AirPlay框架等等Core Services Layer:系统服务层提供给应用所需要的基础的系统服务。如Accounts账户框架,广告框架,数据存储框架,网络连接框架,地理位置框架,运动框架等等。这些服务中的最核心的是
CoreFoundation
和Foundation
框架,定义了所有应用使用的数据类型。CoreFoundation
是基于C的一组接口,Foundation
是对CoreFoundation
的OC封装Core OS Layer:系统核心层包含大多数低级别接近硬件的功能,它所包含的框架常常被其它框架所使用。
Accelerate
框架包含数字信号,线性代数,图像处理的接口。针对所有的iOS设备硬件之间的差异做优化,保证写一次代码在所有iOS设备上高效运行。CoreBluetooth
框架利用蓝牙和外设交互,包括扫描连接蓝牙设备,保存连接状态,断开连接,获取外设的数据或者给外设传输数据等等。Security
框架提供管理证书,公钥和私钥信任策略,keychain
,hash认证数字签名等等与安全相关的解决方案。
想看更详细的可以移步:iOS总体框架介绍和详尽说明
我们只需要知道其中重要的框架就是UIKit和Function框架.下面说说这两个框架.
Function框架
Foundation
框架为所有应用程序提供基本的系统服务。应用程序以及 UIKit
和其他框架,都是建立在 Foundation
框架的基础结构之上。 Foundation
框架提供许多基本的对象类和数据类型,使其成为应用程序开发的基础。
话不多说,我们先来看看Foundation
框架,三个图,包括了Foundation
所以的类,图中灰色的是iOS不支持的,灰色部分是OS X系统的。
这里只需要知道绝大部分Function框架的类都继承NSObject, 小部分继承NSProxy
对于Foundation框架中的一些基本类的使用方法详情参见:iOS开发系列—Objective-C之Foundation框架
UIKit框架
UIKit
框架提供一系列的Class
(类)来建立和管理iOS应用程序的用户界面( UI )接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏等的接口。
UIKit
框架的类继承体系图如下图所示:
在图中可以看出,responder
类是图中最大分支的根类,UIResponder
为处理响应事件和响应链定义了界面和默认行为。当用户用手指滚动列表或者在虚拟键盘上输入时,UIKit
就生成事件传送给UIResponder
响应链,直到链中有对象处理这个事件。相应的核心对象,比如:UIApplication
,UIWindow
,UIView
都直接或间接的从UIResponder
继承 。
这里需要知道一点:UIKit框架所有的类都继承NSObject
UIKit框架的各个类的简单介绍戳后面的链接:UIKit框架各个类的简要说明