Swift面试题更新 2026-08-05

请解释 Swift 中 Actor 的概念,并说明它主要解决了哪些并发编程中的问题?

风险判断技术原理Swift

考察说明

考查对 Swift 并发模型中 Actor 机制的理解及其解决的数据竞争问题。

回答思路

  1. 【回答框架 1】Actor 是 Swift 5.5 引入的并发特性,用于保护可变状态。它是一个引用类型,封装了属性和方法,并确保在同一时间只有一个任务能访问其可变状态,从而避免数据竞争。
  2. 【回答框架 2】Actor 通过编译器强制实施隔离:其内部的可变属性默认不能从外部直接访问,必须通过异步方法或属性访问,这些调用会自动挂起等待,直到 Actor 可处理。这避免了显式加锁的负担。
  3. 【回答框架 3】主要解决的问题是传统锁机制(如 NSLock)易出错、容易导致死锁或性能下降的问题。Actor 提供了更安全的抽象,能减少数据竞争和线程安全问题。
  4. 【回答框架 4】访问 Actor 属性时,如果外部调用其方法,需要标记为 async,否则无法访问。这有助于在编译期发现并发问题。
  5. 【回答框架 5】此外,Actor 还支持可重入性,即在等待异步调用期间,Actor 可以处理其他任务,提高了并发性能。
  6. 【关键点 1】Actor 通过隔离可变状态避免数据竞争。
  7. 【关键点 2】外部访问 Actor 内部状态需通过 async 调用。
  8. 【关键点 3】编译器强制隔离,减少显式锁的使用。
  9. 【关键点 4】Actor 可重入,提高并发效率。
  10. 【易错点 1】混淆 Actor 与普通 class,错误地直接访问其属性导致编译错误或数据竞争。
  11. 【易错点 2】认为 Actor 一定比锁性能更好,实际上存在上下文切换开销,需根据场景评估。