Approachable ConcurrencySwift 6.2- 项目模式快速指南当项目选择使用 Swift 6.2 approachable concurrency 设置默认 actor 隔离 / 主 actor 默认时使用此参考。检测模式在 Xcode 构建设置中检查 “Swift Compiler - Concurrency”Swift 语言版本必须是 6.2。默认 actor 隔离 / 主 Actor 默认。严格并发检查级别Complete/Targeted/Minimal。对于 SwiftPM检查 Package.swift 的 swiftSettings 中是否有相同的标志。预期行为变化默认情况下异步函数停留在调用方的 actor 上除非实现自行选择否则它们不会跳到全局并发执行器。主 actor 默认减少了 UI 绑定代码和全局状态的数据竞争错误因为可变状态受到隐式保护。协议遵循可以是隔离的例如extension Foo: MainActor Bar。如何在此模式下应用修复优先使用最小标注当代码是 UI 绑定时让主 actor 默认机制发挥作用。使用隔离遵循而不是强制nonisolated变通方案。除非有明确的性能需求需要卸载否则将全局或共享可变状态保留在主 actor 上。何时选择退出或卸载工作对必须在并发池上运行的异步函数使用concurrent。只有当类型或成员真正线程安全且在主 actor 之外使用时才将它们标记为nonisolated。当值跨越 actor 或任务边界时继续遵守 Sendable 边界。常见陷阱Task.detached会忽略继承的 actor 上下文除非确实需要打破隔离否则避免使用它。如果 CPU 密集型工作停留在主 actor 上主 actor 默认可能隐藏性能问题将该工作移入concurrent异步函数。关键字来自源速查表关键字作用async函数可以暂停await在此暂停直到完成Task { }启动异步工作继承上下文Task.detached { }启动异步工作不继承上下文MainActor在主线程运行actor具有隔离可变状态的类型nonisolated选择退出 actor 隔离Sendable可安全地在隔离域之间传递concurrent始终在后台运行Swift 6.2async let启动并行工作TaskGroup动态并行工作来源https://fuckingapproachableswiftconcurrency.com/en/