Swift 6.0 发布:为 iOS 和 macOS 开发者带来的新功能

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift 6.0 发布:内存管理与并发性的革命



Apple 团队发布了备受期待的 Swift 6.0——用于 iOS、macOS、watchOS 和 tvOS 的编程语言。这个版本是近年来最重要的版本,包含了几个关键改进,从根本上改变了编写安全高效代码的方式。我们来分析每个 Swift 开发者都应该了解的主要新特性。



新的内存所有权系统 (Ownership)

期待已久的功能已进入稳定版本——严格的所有权模型。以前,Swift 使用自动引用计数 (ARC),这运行良好,但可能导致细微的循环引用错误。现在,开发者可以使用关键字 consuming 和 borrowing 明确指定谁“拥有”数据。这允许:

  • 避免大型数据结构的额外复制。
  • 从性能角度编写更可预测的代码。
  • 完全控制对象的生命周期,而不会出现泄漏风险。

本质上,Swift 6 借鉴了 Rust 的最佳实践,但将其适配到熟悉的 Swift 语法。对于初学者来说,这可能看起来很复杂,但 Apple 保留了以旧方式工作的可能性——新模式通过编译器标志可选启用。



严格并发模式 (Strict Concurrency)

多线程代码的主要敌人是数据竞争。在 Swift 6 中,编译器变得更加严格。现在,完整的并发分析 (SE-0431) 默认启用。这意味着,如果您尝试在没有同步的情况下在线程之间传递非 Sendable 数据,编译器将报错。新特性包括:

  • 自动检查所有闭包的传递安全性。
  • 改进了对 actor 的支持——现在它们运行得更快。
  • 新的 @unchecked Sendable 属性用于迁移旧代码。

开发者将不得不重新审视他们的代码,尤其是在项目中大量使用全局变量和单例的情况下。但结果是值得的:应用程序变得更加稳定,难以发现的错误数量急剧减少。



与 C++ 的互操作性

另一个重要步骤是无需编写 Objective-C 包装器即可直接从 Swift 使用 C++。现在,您可以导入 C++ 头文件并直接调用函数、类甚至模板。这对于以下方面特别有用:

  • 与现有的 C++ 库集成(例如,游戏引擎)。
  • 使用用 C++ 编写的系统 API。
  • 将大型项目从 C++ 逐步迁移到 Swift。

Apple 强调,该支持目前仍是实验性的,但在测试版本中已经显示出高性能。



类型和集合的改进

Swift 6 还带来了一些令人愉悦的小改进。增加了对 noncopyable 类型的支持 (SE-0390)——现在您可以创建只能移动而不能复制的结构体。这对于处理文件描述符或网络套接字非常理想。此外,Collection 协议的功能也得到了扩展——现在它支持具有任意步长的切片。



如何更新?

新的 Swift 6 可在 Xcode 16 和适用于 Linux 的官方发行版中获得。Apple 建议从启用严格并发模式开始迁移

推荐库