启用完整的并发检查
Swift 6 语言模式中的数据竞争安全性旨在实现增量迁移。您可以逐模块地解决项目中的数据竞争安全问题,并且可以在 Swift 5 语言模式中将编译器的 Actor 隔离和 Sendable
检查作为警告启用,从而评估您在消除数据竞争方面的进展,然后再启用 Swift 6 语言模式。
可以使用 -strict-concurrency
编译器标志在 Swift 5 语言模式中启用完整的数据竞争安全检查作为警告。
使用 Swift 编译器
要在命令行直接运行 swift
或 swiftc
时启用完整的并发检查,请传递 -strict-concurrency=complete
~ swift -strict-concurrency=complete main.swift
使用 SwiftPM
在 SwiftPM 命令行调用中
-strict-concurrency=complete
可以通过 -Xswiftc
标志在 Swift 包管理器命令行调用中传递
~ swift build -Xswiftc -strict-concurrency=complete
~ swift test -Xswiftc -strict-concurrency=complete
这对于评估在包清单中永久添加标志之前(如下一节所述)的并发警告数量非常有用。
在 SwiftPM 包清单中
要在使用 Swift 5.9 或 Swift 5.10 工具的 Swift 包中为目标启用完整的并发检查,请在给定目标的 Swift 设置中使用 SwiftSetting.enableExperimentalFeature
.target(
name: "MyTarget",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency")
]
)
当使用 Swift 6.0 或更高版本的工具时,请在给定目标的 Swift 设置中使用 SwiftSetting.enableUpcomingFeature
.target(
name: "MyTarget",
swiftSettings: [
.enableUpcomingFeature("StrictConcurrency")
]
)
使用 Xcode
要在 Xcode 项目中启用完整的并发检查,请在 Xcode 构建设置中将“Strict Concurrency Checking”(严格并发检查)设置设为“Complete”(完整)。或者,您可以在 xcconfig 文件中将 SWIFT_STRICT_CONCURRENCY
设置为 complete
// In a Settings.xcconfig
SWIFT_STRICT_CONCURRENCY = complete;