Swift 速查 — 简明参考
Swift 5.9 语法、值类型、协议与最常用标准库速查手册,覆盖约 80% 日常场景。
Swift Swift 5.9
LLVM (swiftc / Swift toolchain) · 多范式(协议导向 · OO · 函数式) · 静态 · 强类型
学习路径
先学会 print 与变量绑定 → 掌握值类型(struct/enum)与可选值 Optional → 深入函数、闭包与集合 → 理解协议导向设计与扩展 → 用 do-catch 与 throws 处理错误 → 用 async/await 与 DispatchQueue 写并发 → 再按需学 URLSession、日期与构建测试。FAQ 节适合回头避坑。
1.Hello World 与构建环境
运行 Swift 程序、SwiftPM 项目与工具链。
最小程序
顶层代码即程序入口。print 输出。import 导入模块。
运行与构建
swift 直接运行脚本。swiftc 编译。swift run 运行包。
SwiftPM 项目
swift package init 初始化。Package.swift 清单。Sources 源码目录。
import 导入
import 导入模块。Foundation 常用。按需导入子模块。
输出与插值
print/print(items:)。字符串插值 \(值)。分隔符与终止符。
命令行参数
CommandLine.arguments 获取参数。第一个是程序路径。
多文件
同一包多个源文件共享类型。internal 访问级别。
Xcode 集成
Xcode 项目组织。target、scheme。iOS 开发工作流。
2.变量与常量
var/let 绑定、类型推断、作用域与命名。
var 与 let
let 常量不可变。var 变量可变。优先使用 let。
类型推断
编译器根据字面量与上下文推断类型。复杂场景显式标注。
显式类型
冒号后标注类型。提高可读性。转换与字面量兼容。
常量
let 声明常量。引用类型常量不可变引用。编译期常量。
遮蔽
内层作用域同名变量遮蔽外层。if/switch 局部常量常见。
作用域
{} 定义作用域。内层可访问外层。外层不可访问内层。
命名规范
Swift 命名约定。camelCase、清晰动词、避免缩写。
类型转换
数值类型显式转换。init() 构造器。字符串与数值互转。
3.类型系统
基础类型、元组、结构体、枚举与可选值。
基础类型
Int、Double、Bool、String、Character。值类型。
整数类型
Int8-Int64、UInt 系列。平台 Int。溢出处理。
浮点数
Float/Double 精度。CGFloat 界面坐标。运算与特殊值。
元组
多元复合值。命名元素。解构。轻量数据分组。
结构体
struct 值类型。自动成员构造器。属性与方法。
枚举
enum 相关值分组。关联值。原始值。穷尽匹配。
可选值
Optional 表示可能为空。T? 语法。nil 表示无值。
嵌套类型
类型内定义类型。命名空间组织。枚举携带相关类型。
4.值类型与引用
值语义、类引用、写时复制与内存布局。
值 vs 引用
struct 值语义拷贝。class 引用共享。语言核心区别。
class 语义
class 引用类型。身份唯一。可变性与线程共享。
写时复制
数组等值类型内部共享存储。修改时才真正拷贝。
恒等与相等
=== 引用恒等。== 值相等(Equatable)。区别重要。
weak 与 unowned
weak 弱引用不增计数。unowned 无主引用。打破循环引用。
inout 参数
inout 参数引用传入。函数内修改原值。& 调用。
指针互操作
UnsafePointer 与 C 互操作。内存管理责任。危险区域。
内存布局
类型内存布局。字节对齐。影响性能与互操作。
5.流程控制
if、switch、guard、循环与可选绑定。
if / else
if 条件执行。else if 多分支。条件无需括号。
switch
switch 穷尽匹配。区间、元组、绑定。不需要 break。
guard
guard 提前退出。else 必须退出作用域。else 有 else 分支。
for-in 循环
for-in 遍历范围、数组、字典。带索引遍历。
while 循环
while 条件循环。repeat-while 先执行后判断。
break 与 continue
break 退出循环。continue 跳过本轮。带标签退出嵌套。
if let
可选绑定解包。guard let 提前。多值同时解包。
模式匹配
switch/if 中的模式。case let、where。类型匹配。
6.函数
函数定义、参数标签、返回值、函数类型与闭包。
函数定义
func 定义函数。参数与返回值。调用语法。
参数标签
参数标签与内部名。_ 省略标签。可读性设计。
默认参数值
参数默认值。调用时可省略。必须尾部或都有默认。
返回值
返回值类型。多值用元组。隐式返回单表达式。
可变参数
... 收集多个参数为数组。任意数量。最后一个参数。
inout 参数
inout 修改外部变量。& 传址。值类型原地修改。
函数类型
函数可作为类型。赋值、传参、返回。一等公民。
闭包
闭包捕获上下文。尾随闭包。简写参数。
7.字符串
String 操作、插值、子串、Unicode 与格式化。
String 基础
String 值类型。字面量与可变性。Character 组成。
插值
\(表达式) 嵌入值。类型安全。任意表达式。
拼接
字符串拼接。append。join。+= 操作符。
多行字符串
三引号多行。缩进裁剪。内插值。 分隔。
常用方法
大小写、查找、替换、分割、修剪。常用字符串 API。
子串
Substring 引用原串。切片返回 Substring。转 String 持有。
Unicode
字符由 Unicode 标量组成。码点。扩展字位簇。
格式化
String(format:) C 风格格式。数字填充与精度。
8.集合
Array、Dictionary、Set、高阶函数与区间。
Array
有序值集合。泛型 [T]。增删改查。
数组操作
切片、替换、合并、查找。常用高阶方法。
Dictionary
键值对集合。[String: T]。无序。O(1) 查找。
Set
无序唯一元素集合。哈希集合。集合运算。
遍历
数组/字典/集合遍历。带索引。倒序。过滤条件遍历。
高阶函数
map、filter、reduce、compactMap、sorted。函数式处理。
嵌套集合
集合的组合。多维数组、字典内数组、结构体集合。
Range
半开区间 ..<、闭区间 ...。数组切片与循环。
9.内存管理
ARC 引用计数、弱引用、循环引用与内存优化。
ARC
自动引用计数管理类实例。引用计数归零释放。
weak/unowned
弱引用不增计数。防止循环引用。访问已释放处理。
自动释放池
autoreleasepool 延迟释放。大循环内存控制。
拷贝语义
值类型拷贝安全。大类型优化。共享与唯一。
循环引用
两个类互相强引用形成环。内存泄漏。weak 打破。
栈与堆
值类型栈上、引用类型堆上。分配与性能。
lazy 存储
lazy 延迟初始化。用到才创建。耗时属性优化。
内存优化
减少堆分配、复用缓冲、避免大拷贝。性能调优。
10.类与协议
class、继承、协议、扩展与面向协议设计。
class 定义
类定义属性与方法。引用类型。初始化器。
继承
子类继承父类。存储属性、方法。最终类 final。
方法重写
override 覆盖方法、属性、初始化器。super 调用父类。
协议
protocol 定义要求。类型遵守。面向协议设计核心。
协议扩展
extension 提供默认实现。约束扩展。协议默认方法。
扩展
extension 给现有类型加方法。分类组织代码。
属性观察器
willSet/didSet 监听属性变化。界面更新、校验。
计算属性
get/set 计算值。不存储。派生数据。
11.错误处理
throws、do-catch、try、defer 与自定义错误。
Error 协议
Error 协议标记错误类型。枚举定义错误分类。
throws
throws 标记可抛函数。throw 抛出错误。调用需处理。
do-catch
do 块中 try。catch 捕获错误。多分支。
try 变体
try 需要 catch。try? 转可选。try! 强制(崩溃风险)。
自定义错误
错误携带上下文。LocalizedError 描述。错误码。
defer 清理
defer 作用域结束时执行。清理资源。逆序执行。
致命错误
fatalError 不可恢复崩溃。precondition 条件检查。
Result 类型
Result<Success, Failure> 显式成功或失败。避免 throws。
12.输入输出
命令行输入、文件读写、FileManager 与 Codable。
读取输入
readLine 读取命令行输入。循环交互。解析数字。
读取文件
String(contentsOf:) 读文件。Data 二进制。逐行读取。
写入文件
写入字符串与 Data。追加模式。原子写入。
FileManager
文件系统操作。创建目录、删除、移动、判断存在。
输出控制
print 变体。stderr。分隔与终止。字符串描述。
Data 处理
Data 字节容器。互转字符串。base64 编解码。
JSONSerialization
JSON 转字典/数组。反向序列化。JSONSerialization 类。
Codable
Codable 自动序列化。JSONEncoder/Decoder。协议驱动。
13.常见误区
Swift 新手最容易踩的坑与正确写法。
强制解包
! 解包 nil 崩溃。优先可选绑定与空合运算符。
可选链
?. 链式访问。任一环节 nil 整体 nil。赋值也可。
闭包循环引用
闭包捕获 self 强引用形成环。捕获列表 [weak self]。
数组越界
索引越界崩溃。安全访问 first/last/prefix。检查边界。
mutating
struct 方法修改属性需 mutating。值类型不可变副本。
字符串索引
字符串不能整数下标。字符多字节。用 index 方法。
协议与 Self
协议中使用 Self 约束。associatedtype。类型擦除。
隐式解包
T! 隐式解包可选。使用未初始化崩溃。谨慎使用。
14.并发
GCD、async/await、Task 与 actor 并发模型。
GCD 基础
DispatchQueue 串行/并发队列。全局与主队列。
调度组
DispatchGroup 等待多个任务完成。批量并发汇总。
async/await
现代 Swift 并发语法。异步函数与挂起。结构化并发。
async let
并发执行多个异步调用。绑定独立子任务。并行等待。
Task
Task 创建并发单元。继承上下文。取消与优先级。
actor
actor 隔离状态。避免数据竞争。异步方法访问。
主线程
UI 操作必须在主线程。线程跳转。主线程检查。
线程安全
可变状态并发访问保护。锁、队列、原子操作。
15.网络
URLSession、HTTP 请求、异步网络与 JSON 交互。
URLSession
URLSession 发起网络请求。配置与委托。会话类型。
GET 请求
发起 GET。async/await 获取数据。处理响应状态。
POST 请求
发送 JSON body。表单提交。设置 Content-Type。
异步网络
async/await 网络调用。并发请求。取消任务。
URL 构建
URLComponents 安全构建 URL。查询参数编码。路径组合。
下载文件
下载任务保存文件。进度监听。后台下载。
网络 JSON
请求 JSON 并用 Codable 解码。日期与策略处理。
上传文件
multipart 表单上传。文件 body。边界分隔。
16.时间与日期
Date、DateFormatter、日历运算与计时器。
Date
Date 表示时间点。时区无关的绝对时刻。创建与比较。
日期格式化
DateFormatter 显示日期。本地化格式。自定义格式。
解析日期
字符串转 Date。固定格式解析。ISO8601 解析。
日期组件
DateComponents 提取年月日。日历组件运算。
日历运算
日期加减天月。下周/下月。Calendar 运算安全。
时间间隔
测量代码耗时。TimeInterval 秒单位。性能计时。
Timer
定时器重复执行。一次性定时。RunLoop 注意。
日期比较
比较日期先后。判断同一天。排序与验证。
17.进程与系统
命令行参数、环境变量、进程操作与文件路径。
命令行参数
CommandLine 获取参数。处理参数与选项。
环境变量
读取环境变量。设置与传递。敏感信息注意。
Process
Process 启动子进程。执行命令。捕获输出。
路径处理
URL 路径操作。组合、扩展名、文件名。沙盒目录。
退出码
程序退出码。exit 与 fatalError。0 成功非 0 失败。
信号处理
捕获系统信号。SIGINT 等。优雅退出。
工作目录
当前工作目录获取与切换。文件相对路径基准。
进程文件 I/O
标准输入读取。标准输出写入。管道交互。
18.正则表达式
正则字面量、NSRegularExpression 与模式匹配。
正则基础
正则语法概念。字符类、量词、分组。
正则字面量
Swift 5.7 正则字面量 /.../。类型化匹配。捕获命名。
NSRegularExpression
NSRegularExpression 正则引擎。范围匹配。兼容旧系统。
匹配
首次匹配、全部匹配、判断是否匹配。范围获取。
捕获组
提取捕获组内容。命名捕获。正则分组引用。
替换
正则替换文本。模板引用捕获组。条件替换。
分割
按正则分割字符串。分隔符保留与删除。多分隔符。
常用模式
邮箱、URL、数字、手机号等常用正则模板。
19.构建与工具
swiftc 编译、SwiftPM 构建、格式与检查工具。
swiftc 编译
命令行编译单文件。生成可执行。优化选项。
SwiftPM 构建
swift build 编译项目。增量构建。发布模式。
运行测试
swift test 测试套件。XCTest 与测试目标。
Package.swift
SwiftPM 包清单。目标与依赖声明。平台配置。
SwiftLint
代码风格检查。配置规则。CI 集成。
swift-format
官方代码格式化工具。格式规则与配置。
xcodebuild
Xcode 工程命令行构建。导出与归档。CI 使用。
发布流程
版本控制、构建发布、分发。发布检查清单。
关于本速查
本页是 Swift 5.9 的自包含速查手册,覆盖语言核心与最常用标准库在真实项目中约 80% 的常见用法。内容偏向现代惯用法:值类型(struct/enum)、协议导向设计、async/await 结构化并发、if let 模式匹配、以及 Codable 序列化。权威参考见 Swift 官方语言指南与 API 设计规范。 19 个章节各自聚焦一个主题——从第一个程序到可选值、协议、并发与常见误区。每节拆成 8 个带示例的小节(每个 5–20 行),共约 150 个主题。代码片段刻意短小、自解释。 所有处理都在浏览器中完成——无上传、无追踪。本页是 GuruToolkit 免费开发者工具集的一部分;代码片段可自由使用,无任何担保。
版本 2.1.0