跳到主要内容

Swift 基础知识体系概览

为什么要深入学习 Swift?

Swift 是 Apple 平台的主力开发语言,也是 iOS 面试的核心考察领域。从值类型与引用类型的设计哲学,到 Protocol-Oriented Programming(POP)范式,再到 Swift Concurrency 的现代并发模型,Swift 的每一个特性都直接影响日常开发质量和面试表现。

知识全景图

核心知识点一览

1. 值类型 vs 引用类型

Swift 最独特的设计之一是大量使用值类型(struct/enum)而非引用类型(class)。这从根本上减少了共享可变状态带来的 Bug。

特性值类型(struct/enum)引用类型(class)
存储位置通常在栈上(小型)或堆上(大型)堆上
赋值行为拷贝(Copy-on-Write 优化)共享引用
可变性控制let 完全不可变let 仅引用不可变
继承❌ 不支持(用协议组合)✅ 支持
线程安全天然安全(无共享)需要同步机制
典型代表Int, String, Array, DictionaryUIViewController, URLSession
面试要点

Swift 标准库中 绝大多数类型都是 struct(包括 StringArrayDictionary),这是有意为之的设计决策——降低复杂度、提升线程安全。

2. Optional 类型系统

Optional 是 Swift 类型安全的基石,本质是一个枚举:

enum Optional<Wrapped> {
case none
case some(Wrapped)
}

掌握 if letguard let??、可选链、隐式解包等用法是基本功。

3. 协议与面向协议编程(POP)

Swift 强调 Protocol-Oriented Programming,通过协议+扩展实现代码复用,而非传统的类继承:

protocol Drawable {
func draw()
}

extension Drawable {
func draw() {
print("Default drawing")
}
}

4. 泛型系统

泛型 让代码兼顾类型安全与复用性:

func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}

配合 where 约束和关联类型(associatedtype),泛型是协议抽象的核心。

5. 闭包

闭包 是 Swift 中的一等公民,理解捕获语义(值捕获 vs 引用捕获)、@escaping[weak self] 是避免内存泄漏的关键。

6. 枚举与模式匹配

Swift 的枚举远比 C/OC 的枚举强大——支持关联值、方法、遵循协议。配合 switch/if case/guard case 的模式匹配,是处理复杂状态的利器。

7. 错误处理

Swift 的错误处理基于 Error 协议 + do-catch + throws,配合 Result 类型用于异步场景。

8. 属性包装器(Property Wrapper)

@propertyWrapper 是 SwiftUI 的基础(@State@Binding@Published),也可以自定义用于校验、持久化等场景。

9. Swift Concurrency

Swift 并发是 Swift 5.5+ 引入的现代并发模型:

  • async/await:替代回调地狱
  • Actor:保护共享可变状态
  • Structured Concurrency:Task/TaskGroup 管理并发

10. 访问控制

访问控制五级:open > public > internal > fileprivate > private,理解 open vs public 的区别(能否在模块外继承/重写)。

11. Swift 新特性

Swift 持续演进,新特性如 Macro、Parameter Pack、if/switch 表达式、~Copyable 等不断扩展语言能力。

学习路径建议

  1. 先打基础:类型系统(值/引用、Optional)→ 闭包
  2. 掌握抽象:协议 + 泛型 → 枚举 + 模式匹配
  3. 进阶特性:属性包装器 → Swift Concurrency
  4. 持续更新:关注每年 Swift 版本新特性

相关链接