Foundation

Foundation 框架的体系结构概述 #

Foundation 是 Apple 提供的基础框架,适用于 iOSmacOSwatchOStvOS。作为核心数据处理层,Foundation 服务于 UI 框架(如 UIKit、AppKit 或 SwiftUI),负责处理数据存储、网络连接、日期和时间、字符串操作、多线程等应用程序的通用逻辑。

Foundation 框架的模块化设计使它成为 Apple 生态系统的基石,为上层 UI 构建和逻辑执行提供可靠支持。


Foundation 的大分类结构 #

以下是 Foundation 框架的大分类及主要子模块:

分类主要功能组成模块
数据类型与集合提供基本数据类型与集合类,管理字符串、数组、字典、集合等。NSString, NSArray, NSDictionary, NSSet
日期与时间提供高效管理时间和日历的工具,以及格式化显示日期时间的功能。Date, Calendar, DateComponents, DateFormatter
文件管理与 IO 操作管理文件存储或处理文件内容,提供文件系统访问接口。FileManager, FileHandle, Data
数据序列化与编码将数据进行序列化或反序列化,用于存储或网络传输。PropertyListSerialization, JSONSerialization, Codable
URL 与网络处理提供网络通信、URL 编码处理和远程数据下载功能。URL, URLSession, URLComponents
多线程与并发支持多线程编程,提供同步队列、计时器等工具,用于管理并发任务。Thread, OperationQueue, DispatchQueue, Timer
通知系统提供应用内消息广播和监听机制,实现跨模块通信。NotificationCenter, NSNotification
国际化与本地化支持多语言、字符编码及格式化,适配不同区域语言和习惯。Locale, NumberFormatter, NSRegularExpression, Measurement
错误处理提供错误描述与处理系统,统一管理应用中的错误类型和信息。NSError, NSException
数字与度量单位提供精确的数字计算与单位转换(如距离、温度等)。NSNumber, Decimal, Measurement, MeasurementFormatter
键值观察与绑定提供数据状态的观察机制,用于监控对象的变化,实现复杂交互逻辑。Key-Value Observing (KVO), Key-Value Coding (KVC)
UUID 和随机数提供全局唯一标识符 (UUID) 和随机数生成功能。UUID, RandomNumberGenerator, arc4random

接下来将展开 Foundation 的每个分类模块及其子模块的说明。


1. 数据类型与集合 #

子模块功能
NSString表示不可变字符串,提供丰富的字符串操作方法。
NSMutableString可变字符串,支持动态修改文本内容。
NSArray表示有序的集合(数组)。
NSMutableArray可变数组,支持动态添加、删除元素。
NSDictionary键值对存储的集合。
NSMutableDictionary可变字典,支持动态增加或删除键值对。
NSSet无序且唯一的集合。

2. 日期与时间 #

子模块功能
Date表示单一的绝对日期时间点。
Calendar提供对日历逻辑的计算,管理时间单位(如年、月、日、小时等)。
DateComponents表示日历的具体组成部分(如年月日等)。
DateFormatter格式化日期为字符串或解析字符串为日期。
Timer创建基于时间的触发器,用于异步操作(如定时执行任务)。

3. 文件管理与 IO 操作 #

子模块功能
FileManager提供文件系统的访问接口,支持文件的创建、删除、复制、移动等操作。
FileHandle低级别文件 IO 操作工具,支持逐行读取或写入文件。
Bundle管理应用程序的资源文件(如图片、配置文件等)。
Data二进制数据容器,支持读取和存取字节流。

4. 数据序列化与编码 #

子模块功能
PropertyListSerialization支持 Property List 的解析和生成,用于配置文件等场景。
JSONSerialization提供对 JSON 格式的解析和生成。
CodableSwift 原生的序列化与反序列化协议,适用于 JSON、XML 等多种格式。

5. URL 与网络处理 #

子模块功能
URL表示统一资源标识符,提供 URL 编解码功能。
URLComponents解析和构建 URL 的组成部分(如 host, path, query 等)。
URLSession异步网络请求工具,支持下载、上传、后台任务等。
URLRequest用于配置 HTTP 请求信息(如方法、Header 信息)。

6. 多线程与并发 #

子模块功能
Thread直接管理线程的类,支持创建多线程程序。
OperationQueue通过队列管理并行任务,支持依赖关系。
DispatchQueueGCD 组件,提供高效的线程调度工具。
Timer定时器,定期在主线程或后台线程中触发任务。

7. 通知系统 #

子模块功能
NotificationCenter提供应用内的消息广播和监听机制,用于模块间通信(例如状态更新通知)。
NSNotification表示一个具体通知事件的数据结构。

8. 国际化与本地化 #

子模块功能
Locale表示用户的地区和语言习惯(如时间格式)。
NumberFormatter格式化数字,允许根据地区自定义样式(如货币、百分比等)。
NSRegularExpression提供正则表达式功能,支持复杂的字符串匹配和替换。
Measurement表示物理单位(如距离、时间、温度),支持单位的转换。

9. 错误处理 #

子模块功能
NSError错误对象,表示在操作过程中发生的错误信息。
NSException提供对异常(如系统级错误)的捕获与处理(注意:Swift 强调使用Error协议替代)。

10. 数字与度量单位 #

子模块功能
NSNumber表示数字的容器,可以存储整数、小数、布尔值等。
Decimal精确计算大数字或小数,例如货币运算。
Measurement表示度量单位(如重量、温度),支持物理单位的转换。
MeasurementFormatter格式化 Measurement 对象为用户可读的字符串。

11. 键值观察与绑定 #

子模块功能
Key-Value Observing数据监听机制,监测对象属性的值是否发生变化,并触发相应逻辑。
Key-Value Coding通过字符串访问对象的属性,支持动态设置和获取值。

12. UUID 和随机数 #

子模块功能
UUID提供全局唯一标识符,常用于数据库主键或标识符生成。
RandomNumberGenerator生成随机数,支持自定义随机数算法。
arc4randomC 风格的高效随机数生成 API。

Foundation 的设计理念总结 #

  1. 数据驱动:Foundation 提供核心数据类型和集合工具(如字符串、数组、字典),适用于各种操作场景。
  2. 模块化设计:通过单一职责模块,分别完成数据管理、序列化、网络通信、多线程操控等功能。
  3. 跨平台兼容:支持 macOS、iOS、watchOS、tvOS 等所有 Apple 平台。