Swift 6.4 Brings New Language Features and Swift Testing/XCTest Interop

TL;DR · AI 摘要
Swift 6.4 引入异步 defer、URL 解析加速 4 倍、与 XCTest 深度互操作等特性,显著提升开发效率与测试可靠性。
核心要点
- URL 解析性能提升最高达 4 倍,通过优化非复制类型迭代实现
- 引入 ~Sendable 明确标记非 Sendable 类型,增强并发安全性
- Test.cancel API 支持动态取消测试用例,提升测试稳定性
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Swift 6.4 新特性
- 语言改进
- 异步 defer 支持
- weak let/~Sendable 引入
- 隐式成员初始化器
- 测试增强
- @diagnose 警告控制
- Test.cancel 动态取消
- Flaky test 重试机制
- 互操作性
- XCTest 断言映射
- anyAppleOS 平台标识
金句 / Highlights
值得收藏与分享的关键句。
URL 解析性能提升 4 倍,通过优化非复制类型迭代实现
~Sendable 明确标记非 Sendable 类型,解决弱引用并发安全问题
Test.cancel API 支持动态取消测试用例,减少 flaky test 影响
Swift 6.4 引入新语言特性与 Swift Testing/XCTest 互操作性 - InfoQ
InfoQ 首页 News Swift 6.4 引入新语言特性与 Swift Testing/XCTest 互操作性
移动开发
InfoQ AI 工程师认证(7月25日):AI 演示已成功运行。现在需要确保其可靠性。
Swift 6.4 引入新语言特性与 Swift Testing/XCTest 互操作性
2026年6月28日 2分钟阅读
作者:
- Sergio De Simone
#### 为 InfoQ 撰写文章
激发你的求知欲。
帮助全球55万名高级开发者每月保持领先。
联系我们
收听本文 -
0:00
音频已准备就绪
您的浏览器不支持音频元素。
正常
1.25x
1.5x
喜欢
新下拉阅读列表
- 阅读列表
目前作为 Xcode 27 的测试版功能,Swift 6.4 引入了多项增强功能:更好的 C 语言互操作性、简化操作系统可用性检查、细粒度警告控制、defer 中的异步支持、针对不可复制类型的高效迭代、URL 解析速度提升至原来的4倍,以及 Swift Testing 与 XCTest 之间改进的互操作性。
在语言层面,新版本引入了多项优化,旨在简化日常开发。这些改进包括在某些类型表达式中移除不必要的括号、为并发任务添加更多警告、引入 weak let 和 ~Sendable,以及支持新的隐式成员初始化器。
现在可以将 (any Int?) 写作 any Int? 。如果任务闭包中未处理抛出的错误,将生成警告。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 还通过在 Swift Testing 中报告 XCTest 断言失败作为测试问题,并允许 Swift Testing API 在 XCTest 中运行,改进了 XCTest 与 Swift Testing 的互操作性。这使迁移更加容易并保留了测试覆盖率。默认情况下,这些跨框架问题被视为警告,并可在 Xcode 设置中升级为失败。
关于 Swift Foundation,新版本继续推进向 Swift 的迁移,用 Swift 替换遗留的 Objective-C 代码以提升性能和一致性。这包括更快的 Data 操作、改进与 NSData 的桥接,以及统一的 Swift 实现 URL 类型,从而在保持 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 会议录像以获取完整细节。
作者信息主容器
关于作者
章节标题
每位作者信息主容器
#### Sergio De Simone
显示更多
显示更少
#### 本内容属于移动技术主题
##### 相关主题:
- 开发
- macOS
- iOS
- Swift
- 编程语言
- Apple
- 移动
- 相关编辑内容
- 相关赞助商
- 相关赞助商 2026 年 7 月 16 日,东部时间下午 1 点 工程的智能时代:如何设计、构建、测试和运营 AI 驱动系统 主办方:Juveria Kanodia - Harness 工程高级总监
InfoQ 新闻通讯
每周五发送上周 InfoQ 内容精选。加入超过 25 万名高级开发者的社区。查看示例
我们保护您的隐私。 /think