目前,Xcode 27 带来 Swift 6.4 的 Beta 测试版,引入了一系列增强功能:更好的 C 语言互操作性、简化的操作系统可用性检查、更精细的警告控制、defer 中的异步支持、针对非不可复制类型的高效迭代、URL 解析速度最高提升 4 倍,以及改进 Swift Testing 与 XCTest 之间的互操作性。
在语言层面,新版本引入了多项优化,旨在简化日常开发工作。其中包括:移除某些类型表达式中多余的括号;针对并发任务增加警告;引入 weak let 和 ~Sendable;支持一种新的隐式成员逐一初始化器。
现在,无需再编写 (any Int?),只需编写 any Int? 即可。如果未处理抛出的错误,Task 闭包将生成警告。defer 语句支持使用 await 执行异步任务。
新的 weak let 声明允许将此前因包含 weak var 属性而被标记为 @unchecked Sendable 的类定义为 Sendable。反之,如果某个类型不应该符合 Sendable 规范,那么现在可以使用 ~Sendable 对其进行显式标记。
此外,Swift 6.4 增强了成员初始化器:当一个结构体同时包含私有属性和内部属性时,编译器会自动生成两个初始化器,一个用于内部属性,另一个是包含所有属性的私有初始化器。
新增的 anyAppleOS 标识符可以用于简化平台可用性检查:
@available(macOS 27, iOS 27, visionOS 27, *)func doSomething()@available(anyAppleOS 27, *)@available(tvOS 17, unavailable)func doSomething64()#if os(anyAppleOS)...#endifSwift 6.4 还通过新增的 @diagnose 属性引入了对警告的更精细控制。该属性允许开发者屏蔽弃用警告、将警告提升为错误,或将未来的错误降级为警告。该属性适用于单个函数定义。
Swift 6.4 中的测试增强功能让你能够更好地控制测试执行和报告。你可以将问题标记为警告而非失败,并使用 Test.cancel API 动态取消测试(包括参数化测试用例)。你可以更好地处理不稳定的测试,通过重复执行失败的测试直至其通过,或者达到可配置的重试限制。
新版 Swift 会将 XCTest 的断言失败作为测试问题在 Swift Testing 中报告,并允许 Swift Testing API 在 XCTest 中运行,从而提升了 XCTest 与 Swift Testing 之间的互操作性。这简化了迁移过程,并且不影响测试覆盖率。在默认情况下,这些跨框架的问题会被视为警告,但你可以在 Xcode 设置中选择将其升级为失败。
说到 Swift Foundation,新版本继续推进向 Swift 的迁移,替换了旧有的 Objective-C 代码,提升了性能和一致性。其中包括更快的数据操作、经过改进的 NSData 桥接功能,以及 URL 类型统一的 Swift 实现。其结果是,在保持 API 不变的同时,实现了更佳的性能和更低的内存占用。此外,该版本还引入了 ProgressManager。这是一种用于结构化类型安全进度报告的新类型,可以与 async/await 以及元数据处理无缝集成。
使用 Swift 6.4 时,你还可以通过新的 @C 属性将用 Swift 编写的函数暴露给 C 语言,其工作原理与 @objc 类似:
任何可以从 C 导入到 Swift 的类型,也都可以在从 Swift 导出到 C 函数中使用,例如整数、指针、导入的 C 结构体以及具有原始整数值类型的枚举。此外,编译器会阻止你无意中传递与 C 不兼容的类型。
Swift 6.4 还引入了许多超出本文讨论范围的其他新功能,包括对 Swift-Java、WebAssembly 和 JavaScriptKit 的增强,以及性能优化、可迭代协议、借用/修改访问器等。要了解完整详情,请观看 WWDC 大会的录像。
原文链接:https://www.infoq.com/news/2026/06/swift-6-4-beta-features/





