该技能聚焦 Swift 6.2 的并发变化,即“Approachable Concurrency”。适用场景包括:采用 Swift 6.2 并发特性、询问默认 MainActor 推断或构建设置、遇到 6.2 可解决的数据竞争错误、询问 @concurrent/隔离一致性、从 6.0/6.1 迁移及对比 async 函数行为。
主要变化:默认隔离由手动 @MainActor 变为可选推断模式;async 函数不再跳到通用并发执行器,而是停留在调用它的 actor 上;@MainActor 类型可用 extension Type: @MainActor ProtocolName 实现隔离一致性;后台执行用 @concurrent 替代 Task.detached。
启用默认 MainActor 推断:Xcode 在 Build Settings > Swift Compiler - Concurrency > Default Actor Isolation 选 MainActor;SwiftPM 在目标 swiftSettings 使用 .defaultIsolation(MainActor.self)。仅建议 App 目标与脚本/可执行文件使用,库、框架与包插件不应使用。需后台的类型或函数用 nonisolated 退出。
@concurrent 用于明确将函数卸载到后台线程池,步骤为:容器类型标 nonisolated、函数加 @concurrent、设为 async、调用方 await。仅用于 CPU 密集或阻塞 I/O 等真正昂贵的工作,不要用于琐碎函数。
隔离一致性只能在与相同隔离域匹配的上下文中使用;若在 nonisolated 上下文使用会编译错误。迁移步骤包括:升级到 6.2 工具链、为 App 目标启用默认 MainActor 推断、删除冗余 @MainActor、用 @concurrent 替换 Task.detached、用隔离一致性替换 @unchecked Sendable 绕过、为不应在 MainActor 上运行的类型加 nonisolated。
常见错误:给库启用默认 MainActor 推断、把琐碎函数标 @concurrent、启用后忘记 nonisolated、在不匹配隔离上下文使用隔离一致性、未启用构建设置就删除 @MainActor。资料未提供收费、价格与平台等额外信息。