首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Swift 的多平台策略,需要我们大家一起来建设 | 肘子的 Swift 周报 #091

Swift 的多平台策略,需要我们大家一起来建设 | 肘子的 Swift 周报 #091

作者头像
东坡肘子
发布2025-07-01 14:10:08
发布2025-07-01 14:10:08
1680
举报

weekly.fatbobman.com[1]订阅本周报的电子邮件版本。访问我的博客 肘子的 Swift 记事本[2]查看更多的文章。加入 Discord[3]社区,与 2000+ 中文开发者深入交流 Swift、SwiftUI 开发体验。

Swift 的多平台策略,需要我们大家一起来建设

继 2025 年 2 月 Swift 社区论坛发布关于启动 Android Community Workgroup 的消息数月后,Swift.org 于上周正式宣布成立官方 Android 工作组[4]。这标志着由官方主导的 Swift 安卓平台支持正式启动,未来 Swift 开发者有望获得更完善的安卓适配工具链与开发体验。

不过,在欣喜之余,我们也应正视一个现实:对于绝大多数 Swift 开发者来说,长期以来的开发工作深度依赖苹果生态,日常所用 API 多与系统框架强耦合。尽管 Swift 社区和苹果已着手推进 Foundation 的纯 Swift 化改造,并陆续提供更多跨平台基础库,但这距离满足实际跨平台开发的需求仍有相当差距。

不久前,Swift Package Index[5]在原有对苹果平台和 Linux 的兼容性标识基础上,新增了对 Android 与 Wasm 平台的支持,侧面反映出社区对多平台适配的重视。我也借此机会让自己的两个库完成了对 Linux 的兼容。不过在适配过程中也深刻体会到,目前还缺乏一个便捷、统一的跨平台开发环境。虽然这两个库的适配较为简单,仅通过 GitHub Actions 就完成了编译测试和修复,但若将来需要支持更多平台,社区能否构建一个便利、安全的适配机制将变得至关重要。

原创

NotificationCenter.Message:Swift 6.2 并发安全通知的全新体验[6]

NotificationCenter 作为 iOS 开发中的经典组件,为开发者提供了灵活的广播——订阅机制。然而,随着 Swift 并发模型的不断演进,传统基于字符串标识和 userInfo字典的通知方式暴露出了诸多问题。为了彻底解决这些痛点,Swift 6.2 在 Foundation 中引入了全新的并发安全通知协议:NotificationCenter.MainActorMessageNotificationCenter.AsyncMessage。它们充分利用 Swift 的类型系统和并发隔离特性,让消息的发布与订阅在编译期就能得到验证,从根本上杜绝了“线程冲突”和“数据类型错误”等常见问题。

近期推荐

Xcode Coding Intelligence 逆向解析简报 (Reverse-Engineering Xcode's Coding Intelligence Prompt)[7]

在 Xcode 26 中,苹果正式推出了备受期待的 AI 编码助手 —— Coding Intelligence。相较于市面上已有的 AI 编程工具,苹果在系统提示词(system prompt)的设计上是否有自己的哲学?Peter Friese[8]借助 Proxyman 对其进行了深入逆向分析。通过这些解析出的提示词内容,我们不仅可以了解 Coding Intelligence 的工作机制,也能窥见苹果对现代开发实践的倾向性,比如:强烈推荐使用 Swift Concurrency(async/await、actor)而非 Combine,测试建议使用 Swift Testing 框架与宏。这些设计细节,是苹果开发范式的重要指标。

SwiftUI 设计系统中的语义颜色设计 (SwiftUI Design System Considerations: Semantic Colors)[9]

在构建 SwiftUI 设计系统 API 时,如何优雅地处理 语义颜色(Semantic Colors)始终是一个令人头疼的问题。Magnus Jensen[10]在本文中系统梳理了常见方案的优缺点,并提出了一种基于宏(macro)的解决路径,力求实现 可读性强、类型安全、上下文感知的色彩系统。如果你正打算为自己的 SwiftUI 项目设计一套结构清晰、可维护的风格体系,这篇文章值得一读。

iOS 内存效率指南系列 (Memory Efficiency in iOS)[11]

随着项目复杂度的提升,开发者终将面对内存相关的问题:内存泄漏、系统警告,甚至因资源占用过高被系统强制终止。在这种情况下,如何诊断问题、控制内存占用,是对开发者经验与体系理解的深度考验。Anton Gubarenko[12]在两篇文章(内存优化篇[13])中,系统梳理了 iOS 应用内存使用的评估方式、诊断工具以及优化手段,构建出一套完整、实用的内存管理知识体系。

What is @concurrent in Swift 6.2?[14]

从 Swift 最近的几个版本更新和 Xcode 26 的表现可以看出,Swift 团队正有意识地优化并发编程的开发体验。通过启用新的默认行为,开发者无需在一开始就理解所有细节,便能写出更安全的并发代码。@concurrent的引入,正是这一策略下的产物之一。在 Donny Wals[15]的这篇文章中,他详细介绍了 @concurrent的背景与用途。简单来说,@concurrent是 Swift 6.2 引入的显式并发标记,主要用于在启用 NonIsolatedNonSendingByDefault特性时,明确指定函数运行在全局执行器上,从而在需要时将工作负载转移到后台线程,避免阻塞调用者所在的 actor(如主线程)。

或许有人会质疑 Swift 是否又在“用新关键字补旧洞”,但从语言设计趋势来看,随着并发模型逐步完善,许多旧关键字的使用将逐渐被默认机制吸收、简化甚至隐藏。

Swift 与 Java 互操作 (Swift 6.2 Java interoperability in Practice)[16]

Swift 与 Java 的互操作并非新鲜事物,但过往的解决方案往往过程复杂且容易出错。Swift 6.2 引入的 swift-java包具有划时代意义——这是首次提供官方支持、与工具链深度集成、开发体验接近一等公民的互操作方案,标志着 Swift 和 Java 之间真正意义上的“无缝互通”正式到来。Artur Gruchała[17]通过一个完整的示例项目,详细演示了如何从 Swift 端调用 Java 方法、构建双语言协作的 CLI 应用,并深入分析了实际开发中容易踩坑的关键细节——特别是 classpath 配置等看似简单却至关重要的环节。

Kodeco 教程:迁移到 Swift 6 (Migrating to Swift 6 Tutorial)[18]

Swift 6 引入了更严格的并发规则与更加结构化的编程范式。在迁移过程中,理解隔离域、Sendable 类型、默认行为,以及 @concurrent的使用变得尤为重要。Audrey Tam[19]通过一个完整的 SwiftUI 示例项目(附项目源码),系统演示了从 Swift 5 迁移至 Swift 6.2 的全过程,涵盖 Xcode 设置、并发语义调整与数据隔离等核心环节,是一篇很具实用价值的迁移教程。

Modern Concurrency - Swift 6.2 Suite of Examples[20]

如何在 async/await 中实现类似 Combine 的 throttle 操作?如何持续追踪 @Observable属性的变化?如何构建支持多消费者的异步流?Lucas van Dongen[21]在这个开源项目中给出了系统性的实践示例。他汇集了 Swift 6.2 并发模型下的多种模式,演示了如何在实际项目中逐步替代 Combine,迁移到更现代、类型安全的并发范式。

是否升级应用的最低支持版本?(Considerations for New iOS Versions)[22]

WWDC 25 中 Liquid Glass 的登场令人惊艳,但要同时支持两种视觉风格,对开发资源是一大考验。这也让很多开发者开始思考是否应放弃对旧系统的支持。David Smith[23]建议从两个角度判断:现有用户影响新用户流失。以他的 Widgetsmith 应用为例,当前仍有约 9% 的新增用户来自旧系统,一旦抬高最低支持版本将直接失去这部分潜在用户。他认为,只有当旧系统用户占比降至个位数时,再做版本升级才更合理——简化技术负担,不应以牺牲业务增长为代价

往期内容

#090 失去时才会觉得可贵

#089 WWDC 2025:回归务实的一年

#088 WWDC 2025 开发者特辑

THANK YOU

如果你觉得这份周报或者我的文章对你有所帮助,欢迎 点赞赞赏,并将其 转发给更多的朋友。

参考资料

[1]

weekly.fatbobman.com: https://weekly.fatbobman.com

[2]

肘子的 Swift 记事本: https://fatbobman.com

[3]

Discord: https://t.ly/gzxeh

[4]

正式宣布成立官方 Android 工作组: https://www.swift.org/android-workgroup/

[5]

Swift Package Index: https://swiftpackageindex.com

[6]

NotificationCenter.Message:Swift 6.2 并发安全通知的全新体验: https://fatbobman.com/zh/posts/notificationcentermessage-a-new-concurrency-safe-notification-experience-in-swift-62/?utm_source=fatbobman%20weekly%20issue%2091&utm_medium=web

[7]

Xcode Coding Intelligence 逆向解析简报 (Reverse-Engineering Xcode's Coding Intelligence Prompt): https://l.fatbobman.com/w091-01

[8]

Peter Friese: https://x.com/peterfriese

[9]

SwiftUI 设计系统中的语义颜色设计 (SwiftUI Design System Considerations: Semantic Colors): https://l.fatbobman.com/w091-02

[10]

Magnus Jensen: https://x.com/magnuskahr

[11]

iOS 内存效率指南系列 (Memory Efficiency in iOS): https://l.fatbobman.com/w091-03

[12]

Anton Gubarenko: https://x.com/AntonGubarenko

[13]

内存优化篇: https://antongubarenko.substack.com/p/memory-efficiency-in-ios-reducing

[14]

What is @concurrent in Swift 6.2?: https://l.fatbobman.com/w091-04

[15]

Donny Wals: https://x.com/donnywals

[16]

Swift 与 Java 互操作 (Swift 6.2 Java interoperability in Practice): https://l.fatbobman.com/w091-05

[17]

Artur Gruchała: https://x.com/GruchalaArtur

[18]

Kodeco 教程:迁移到 Swift 6 (Migrating to Swift 6 Tutorial): https://l.fatbobman.com/w091-06

[19]

Audrey Tam: https://x.com/mataharimau

[20]

Modern Concurrency - Swift 6.2 Suite of Examples: https://l.fatbobman.com/w091-07

[21]

Lucas van Dongen: https://x.com/LucasVanDongen

[22]

是否升级应用的最低支持版本?(Considerations for New iOS Versions): https://l.fatbobman.com/w091-08

[23]

David Smith: https://mastodon.social/@_Davidsmith

[24]

AdventureX 25 游客指南: https://l.fatbobman.com/w091-09

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 肘子的Swift记事本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Swift 的多平台策略,需要我们大家一起来建设
  • 原创
    • NotificationCenter.Message:Swift 6.2 并发安全通知的全新体验[6]
  • 近期推荐
    • Xcode Coding Intelligence 逆向解析简报 (Reverse-Engineering Xcode's Coding Intelligence Prompt)[7]
    • SwiftUI 设计系统中的语义颜色设计 (SwiftUI Design System Considerations: Semantic Colors)[9]
    • iOS 内存效率指南系列 (Memory Efficiency in iOS)[11]
    • What is @concurrent in Swift 6.2?[14]
    • Swift 与 Java 互操作 (Swift 6.2 Java interoperability in Practice)[16]
    • Kodeco 教程:迁移到 Swift 6 (Migrating to Swift 6 Tutorial)[18]
    • Modern Concurrency - Swift 6.2 Suite of Examples[20]
    • 是否升级应用的最低支持版本?(Considerations for New iOS Versions)[22]
    • THANK YOU
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档