这是我参与「第四届青训营」笔记创作活动的第2天,记录了7月25日iOS端青训营课堂的第一部分重点内容。
课堂重点
本节课主要学习了解iOS系统框架结构、分层、存放位置等内容。
iOS系统框架
苹果官方文档:将动态代码库、nib files、图片文件、头文件和参考文件全部封装成一个单一的资源包,多个程序可以同时共用它,调用它去执行任务。
在Xcode中,Framework是一个后缀为.framework的文件夹,程序在启动时会将它加载进内存。Framework以资源包的形式存在,除了系统提供的Framework,还可以自己开发/调用第三方开发的Framework。
Framework目录结构特征
- Headers文件夹,存放.h头文件,记录Framework中public类的声明、静态变量等
- 与该Framework文件夹同名的二进制文件,unix executable,记录实现代码被编译后的内容
- Resources文件夹,存放其他资源文件
- Modules文件夹
- Versions文件夹,存放各版本的上述文件——文件内容真正存放的位置,而上述四条目录结构都是对应文件的链接
系统框架分层
从上到下分为四层:Cocoa Touch(触摸层)、Media(媒体层)、Core Services(服务层)、Core OS(操作系统层)。
上层框架会依赖底层框架,底层框架不会依赖上层。
- Core OS
- 该层提供的框架是Apple中最接近硬件层面的框架
- 一般不会直接应用于应用程序,而是为其他框架提供依赖
- 安全相关任务、设备间交互通讯等场景,一定会应用到该层的框架
- CoreBluetooth:蓝牙与外部交互
- Security:管理证书,管理公钥私钥
- Accelerate:利用硬件进行复杂计算
- Core Services
- 提供应用程序所需要的基础系统服务
- Foundation框架在这一层
- Media
- 提供图片、音频、视频等技术支持
- 视频、直播、相机等app与Media层打交道较多
- Cocoa Touch
- 大部分框架与UI界面有关
- UIKit框架在这一层:提供大量UI控件
- 按钮、标签、滚动列表、宫格视图
- UIViewController、UIView
- app的页面显示和跳转离不开UIKit框架的功能
- MapKit地图框架
- NotificationCenter通知中心框架
系统框架存放的位置
- Xcode:各SDK文件夹下都存在路径/System/Library/Frameworks
- app在实际设备运行:iOS文件路经中,也有/System/Library/Frameworks
- 文件夹中包含实现的可执行文件,以供app运行时链接和使用
总结
今天先系统了解一下iOS系统框架的一些特点和用途~~明天重点关注服务层的Foundation框架为应用程序提供的各项基础系统服务哈哈哈哈😄