Skip to content

Releases: SwiftCommunityRes/SwiftWeekly

库克卸任与特努斯接任、六大新品路线与 FilePath 进标准库 | Swift 周报 Issue 99

27 Apr 05:43

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们 👋

这是 Swift 编辑组自主整理的第九十九期周报。经过一段时间的打磨,目前周报的各个模块已经逐步稳定下来,也越来越贴近大家的阅读习惯。

如果你对内容选题、结构安排或呈现方式有任何建议,非常欢迎在文末留言,你的反馈会直接影响后续周报的方向。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周发布,也非常欢迎志同道合的朋友加入编辑组。

生活给予我们百般苦难,但伤痕使我们愈发强壮。当穿过暴风雨幕,你就不再是原来的自己,坚韧会触发蜕变,勇气将收获新生!👊👊👊

本期精选速览

  • 新闻和社区:苹果官宣库克 9 月卸任 CEO、任执行董事长,硬件工程高级副总裁 约翰·特努斯(John Ternus) 接任;古尔曼爆料 6 大新品方向(AI AirPods、智能眼镜、HomePad、桌面机器人等)
  • 提案:SE-0511、SE-0520、SE-0521、SE-0524 正式通过;SE-0527~SE-0529 正在审查
  • Swift 论坛:SE-0529 FilePath 进标准库、@Reasync 宏 pitch、值类型 initprivate let 缺陷、Calendar 时区初始化、SE-0521 接受(含修改)
  • 推荐博文:Electron 录音引擎 Swift 重写、Swift 并发运行时追踪、Swift 6.3 与 Android SDK

上期话题投票结果如下:

话题讨论

本期话题:苹果 CEO 交接之际,你最关注哪一方面?

选项:

  1. 硬件与自研芯片路线能否延续
  2. 软件、AI 与开发者体验
  3. 中国市场与供应链
  4. 先观望,以后续产品为准
  5. 其他(欢迎留言说明)

欢迎在留言区写下你的选择和理由,下期周报将公布投票结果与读者观点摘要

新闻和社区

苹果官宣 CEO 库克即将卸任,硬件高管约翰·特努斯将接任

2026 年 4 月 21 日|来源:TechWeb

苹果宣布:现任 CEO 蒂姆·库克拟于 2026 年 9 月 1 日卸任首席执行官,转任董事会执行主席;**约翰·特努斯(John Ternus)**接任 CEO。库克 1998 年加入苹果,2011 年起任 CEO 近 15 年,公司市值与营收大幅提升。特努斯 2001 年加入苹果,长期负责硬件工程,被认为是自研芯片与多款主力产品线的关键推动者。

库克发布致用户公开信,回顾与全球用户通过邮件建立的联结,表达对团队与用户的感谢,并强调特努斯对苹果价值观与产品文化的认同;完整原文以苹果官方与权威媒体发布为准,此处从略以控制篇幅。

苹果将开发 6 大新产品,涉机器人、安防摄像头等

2026 年 4 月 24 日|来源:TechWeb

马克·古尔曼在播客中爆料,苹果正探索约 6 类新品方向,涵盖 AI AirPods智能眼镜、挂饰类设备、带屏智能音箱(HomePad)桌面机器人安防摄像头 等,多数为苹果此前较少涉足的形态。报道称 智能眼镜 或于 2026 年底至 2027 年初有节点,HomePad 或于 2026 年秋季,桌面机器人 或指向 2027 年(亦可能延期)。具体节奏以官方为准,市场亦关注苹果能否在智能家居与可穿戴红海中做出差异化体验。

提案

通过的提案

SE-0511
SwiftPM 添加目标插件命令 提案已通过审查。

该提案此前已在 第九十五期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0520
在任务初始化器中使用可丢弃的结果 提案已通过审查。

该提案此前已在 第九十七期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0521
改进了不透明和存在类型可选的语法 提案已通过审查。

该提案此前已在 第九十七期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0524
使用 Output(Raw)Span 添加 withTemporaryAllocation 提案已通过审查。

该提案此前已在 第九十八期周报 的「正在审查的提案」模块中做过详细介绍。

正在审查的提案

SE-0527
RigidArray 和 UniqueArray 提案正在审查。

建议在标准库引入 RigidArrayUniqueArray,用于存储不可复制(~Copyable 元素的数组场景(与既有 Array 的 CoW 模型区分)。

SE-0528
Continuation:安全且高性能的异步延续 提案正在审查。

提出 Continuation<Success, Failure> 等设计,以 ~Copyableconsuming 语义缩小 UnsafeContinuationCheckedContinuation 之间的安全与性能差距。

SE-0529
将 FilePath 添加到标准库 提案正在审查。

将代表平台路径的 FilePath 及其基础操作纳入标准库,作为文件系统相关 API 的「货币类型」基础;更细致的便利 API 可后续迭代。

Swift 论坛

1、SE-0529:将 FilePath 加入标准库

作者:John McCall | 发布日期:2026 年 4 月 23 日
阅读原帖

审查期截至 2026 年 5 月 4 日。提案拟将 FilePath 提升为 Swift 标准库类型,统一跨平台(POSIX / Windows)路径表示与基础操作,并讨论与 swift-system 既有实现的迁移关系。

动机:
在标准库中缺少专用路径类型时,开发者往往过度依赖 URL 或额外依赖,路径语义与文件系统交互不够清晰。

讨论亮点:
围绕命名(如 nullTerminated 相关)、路径规范化与符号链接、是否 Codable 等讨论较多;有建议将平台差异与最佳实践写进标准库文档。

简要点评:
面向文件系统路径的「正名」型提案,有利于减少 URL 滥用与提升跨平台基础层一致性。

2、Pitch: @Reasync 与 @ReasyncMembers 宏

作者:broken-circle | 发布日期:2026 年 4 月 22 日
阅读原帖

提议通过 @Reasync / @ReasyncMembers 在编译期为 async API 生成同步重载,减轻双份维护与漂移问题;作为语言级 reasync 未落地前的工程化补充。

简要点评:
适合测试、断言库等需要同步/异步成对 API 的场景,可展开关注与实现细节对函数体变换的覆盖范围。

3、带默认值私有 let 字段的 init 值语义问题

作者:taylorswift | 发布日期:2026 年 4 月 22 日
阅读原帖

示例表明:含带默认值 private let 字段的结构体在扩展中写 self = .init(...) 会误报「只能初始化一次」。讨论中 Joe Groff 认为更像编译器缺陷,应把整体赋值视为值替换而非逐字段赋初值。

简要点评:
影响用 padding / 预置字段等模式封装值类型的实际写法,若修复将减少意外编译错误。

4、为特定时区的 Calendar 提供更具表达力的初始化方式

作者:Kiel Gillard | 发布日期:2026 年 4 月 21 日
阅读原帖

提议 Calendar(identifier:timeZone:) 等一次性构造方式;社区亦讨论 流式/链式 API 作为替代或补充,以支撑后续更多配置项而保持可读性。

简要点评:
小改进型讨论,与 Foundation API 演进的 ABI/扩展性需要一并权衡。

5、[已接受(含修改)]SE-0521:改进 Opaque 与 Existential 类型的 Optional 语法

作者:Jumhyn (Frederick Kellison-Linn) | 发布日期:2026 年 4 月 19 日
阅读原帖

SE-0521 已由 LSG 接受(含修改):除允许 any P? / some P? 的写法外,对 抑制约束(如 ~Copyable 的 optional 形式亦做了对齐说明;.swiftinterface 中可仍保留带括号形式以便工具消费。

简要点评:
语法层「少写一层括号」的改进,配合约束抑制场景,有利于并发与存在类型相关代码的可读性。

推荐博文

以下三篇文章非常值得一读,适合本周「提升技能 + 开阔思路」:

我们如何用 Swift 重写 Electron 录音引擎

摘要: Circleback 团队将实时音视频采集从渲染进程中的 JS 迁出,在 macOS 使用 ScreenCaptureKit、在 Windows 结合自研与原生层,并以 Swift 搭建共享逻辑;同时介绍内部工具在编译期生成与前端类型安全桥接的实践,可借鉴实时媒体类桌面应用架构。

Swift 并发:一个 await、两个 Actor 的运行时追踪

摘要: 从一次跨 Actor 的 await 出发,结合运行时路径解释任务挂起/恢复、延续状态与执行器切换等,帮助在复杂并发场景下建立可预测的心智模型。

Swift 6.3 稳定版:正式支持 Android SDK,扩展 C 互操作

摘要: 梳理 Swift 6.3 要点:Android SDK、@c / @implementation 等 C/C++ 互操作进展,以及 weak let、模块选择器、嵌入式等相关增强,呈现 Swift 跨平台与系统层互操作的一幅快照。

关于我们

Swift 社区 是由 Swift 爱好者共同维护的技术组织,主要通过微信公众号运营。

我们专注于 Swift 实战、SwiftUI、Swift 基础 三大方向,每周为你带来精选内容与最新生态资讯。

关注公众号:「Swift社区」
后台回复 "进群" 即可加入开发者交流圈。

Swift社区

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

阿耳忒弥斯 2 号与 iPhone 深空摄影、三年计划与折叠屏 Ultra | Swift 周报 Issue 98

13 Apr 14:15

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们 👋

这是 Swift 编辑组自主整理的第九十八期周报。经过一段时间的打磨,目前周报的各个模块已经逐步稳定下来,也越来越贴近大家的阅读习惯。

如果你对内容选题、结构安排或呈现方式有任何建议,非常欢迎在文末留言,你的反馈会直接影响后续周报的方向。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周发布,也非常欢迎志同道合的朋友加入编辑组。

数据可以被云端存储,但勇气必须随身携带。即使在 AI 算法的时代,你仍是自己人生的唯一开发者,代码可以复制,但你的坚韧与勇气无可粘贴。👊👊👊

本期精选速览

  • 新闻和社区:库克祝贺阿耳忒弥斯 2 号成功,iPhone 17 Pro Max 完成载人深空拍摄;苹果「三年计划」与折叠屏 iPhone Ultra(9 月)等传闻;工信部提醒苹果用户及时修复漏洞
  • 提案:SE-0503、SE-0510、SE-0522、SE-0523 正式通过;SE-0524~SE-0526 正在审查;SE-0490、SE-0516 被拒
  • Swift 论坛:Result 异步支持、swift-tar、SE-0526 withDeadline、Task.immediate 用法、SE-0469 Task.name 修订
  • 推荐博文:Swift 脱离 Xcode 与 LSP、Swift 从应用到服务(QCon)、defer 原理与场景

上期话题投票结果如下:

话题讨论

本期话题:随着 AI 辅助编程普及,你觉得程序员岗位被 AI 大面积取代还有多久?

选项:

  1. 放心,没那么容易被取代,至少 10 年内不会。
  2. 五年左右吧,岗位已经在大面积减少啦。
  3. 三年左右吧,各行各业都在被取代了。
  4. 兄 dei,我已经在拼命发展副业啦,一年以后必然是 AI 的天下啦。

欢迎在留言区写下你的选择和理由,下期周报将公布投票结果与读者观点摘要

新闻和社区

苹果 CEO 库克祝贺阿耳忒弥斯 2 号任务成功,将 iPhone 摄影带到全新高度

2026 年 4 月 11 日|来源:快科技

NASA 阿耳忒弥斯 2 号「猎户座」飞船成功溅落,美国首次载人绕月任务收官。库克发文祝贺,称宇航员用 iPhone 捕捉太空与地球景观,将 iPhone 摄影带到新高度。任务中 4 名宇航员各携带一台 iPhone 17 Pro Max(飞行模式、经飞船系统回传),完成绕月拍摄等,被视作「Shot on iPhone」的太空级里程碑;NASA 认可其便携、防抖与影像能力。

苹果三年计划曝光:由里到外「重新定义」iPhone;首款折叠屏或定名 iPhone Ultra

2026 年 4 月 9 日|来源:鲁中晨报等

据产业链与彭博社古尔曼等报道,苹果正推进一项约三年的 iPhone 路线图:2025 年 9 月已推出重新设计的 iPhone 17 Pro 系列与 iPhone Air;2026 年 9 月有望发布首款大折叠 iPhone(传闻命名 iPhone Ultra),横向书本式折叠、内外双屏,iOS 27 或强化分屏与类 iPad 多任务;售价或突破 2000 美元,成史上最贵 iPhone。古尔曼还称2027 年 9 月可能有 20 周年纪念版(无开孔全面屏等设想仍存不确定性)。另有分析称折叠机型或因厚度采用侧边 Touch IDeSIM 等取舍。富士康试产、郭明錤与机构对定价的预测多为市场传闻,以官方发布为准。

工信部紧急提醒苹果用户

2026 年 4 月 4 日|来源:券商中国

工信部网络安全威胁和漏洞信息共享平台(NVDB)通报,有攻击者利用针对苹果终端的漏洞利用工具实施网络攻击,可导致信息窃取、设备被远程控制等。影响范围包括 iOS 13.0 至 17.2.1 的 iPhone、iPad 等。攻击常通过短信、邮件或恶意网页诱导用户使用 Safari 访问恶意页面并植入木马。建议用户尽快升级系统、安装安全补丁(可参考 苹果安全更新公告),并避免点击可疑链接。

提案

通过的提案

SE-0503
抑制与默认值关联类型的默认一致性 提案已通过审查。

该提案此前已在 第九十四期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0510
介绍 Dictionary.mapValuesWithKeys 提案已通过审查。

该提案此前已在 第九十五期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0522
源级控制编译器警告 提案已通过审查。

该提案此前已在 第九十七期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0523
Hashable 符合 UnownedTaskExecutor 提案已通过审查。

UnownedTaskExecutor 增加 Hashable 一致性,使其可作为字典键与集合元素;该类型已符合 Equatable,此次为自然且源码兼容的扩展。

正在审查的提案

SE-0524
使用 Output(Raw)Span 添加 withTemporaryAllocation 提案正在审查。

引入以 OutputSpanOutputRawSpan 包裹临时缓冲区的顶层 API,在保留跨度类型安全保证的同时,沿用 withUnsafeTemporaryAllocation 的栈分配优化。

SE-0525
RawSpan 安全加载 API 提案正在审查。

为从 RawSpanMutableSpanOutputRawSpan 表示的内存中安全加载与存储特定类型提供一组 API,便于跨进程缓冲与解析类工具。

SE-0526
withDeadline 提案正在审查。

引入 withDeadline,为异步操作提供基于连续时钟截止时间的可组合限制:在截止前完成则返回结果,超时则取消操作。

拒绝的提案

SE-0490
环境受限的共享库 提案被拒绝。该提案此前已在 第八十六期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0516
借用序列 提案被拒绝。该提案此前已在 第九十六期周报 的「正在审查的提案」模块中做过详细介绍。

Swift 论坛

1、Pitch: 为 Result 添加异步支持

作者:mattie | 发布日期:2026 年 4 月 8 日
阅读原帖

动机:
Result.init(catching:) 仅支持同步 throws 闭包,难以直接包裹异步工作,项目中常重复手写样板代码。

核心设计:

  • Result 增加支持 async throwscatching 初始化器
  • 讨论是否为 Task 增加 result 属性(Result<Success, Failure>)以配合 flatMap 等链式用法
let result = await Result {
  try await asyncWork()
}

讨论亮点:
社区对异步版 catching init 反响积极;对 Task.result 是否必要存在分歧,作者表示持开放态度。

简要点评:
小而实用的补全,有助于统一 Resultasync/await 的用法,纳入标准库可减少重复工具代码。

2、swift-tar:纯 Swift 实现的 TAR 归档读写库

作者:kateinoigakukun | 发布日期:2026 年 4 月 6 日
阅读原帖

动机:
在无 Foundation、嵌入式或 WebAssembly 等环境处理 TAR 时,缺少成熟纯 Swift 方案。

核心特性:
无 Foundation 依赖;跨平台(含 WASM、Embedded Swift);支持 GNU/PAX 扩展;提供内存与流式解压 API。基准测试中解压大型 tarball 速度可略快于系统 bsdtar。MIT 协议开源。

讨论亮点:
关注 API 设计与大文件场景下的内存行为。

简要点评:
填补了「无系统框架场景下的 TAR」空白,对工具链与跨平台 Swift 很实用。

3、SE-0526:withDeadline 正式审查

作者:Jumhyn | 发布日期:2026 年 4 月 7 日
阅读原帖

审查期截至 2026 年 4 月 20 日。提案引入 withDeadline,在绝对时间点前完成异步体则返回结果;超时则取消并待操作结束后以包装错误等形式返回。

动机:
为超时与取消提供可组合、与 Swift 并发模型一致的表达。

讨论亮点:
关于 DeadlineError<Failure> 与 typed throws 的配合、超时后是否等待任务结束等语义,社区有细化讨论。

简要点评:
并发工具箱的重要补充;错误建模方式也反映出当前类型化错误在「联合错误」上的局限。

4、Task.immediate 的正确使用场景探讨

作者:mattneub | 发布日期:2026 年 4 月 8 日
阅读原帖

作者在 UIKit @IBAction 中用 Task.immediate 调用 @MainActorasync 处理器,以减少普通 Task 的调度延迟与测试中的时序问题。

讨论亮点:
mattie 等指出 Task.immediate 与继承 Actor 上下文语义相关;若目标为独立 actor 而非 @MainActor,仍可能在进入 body 时挂起切换执行器,效果因隔离域而异。

简要点评:
有助于厘清 Task.immediate 的边界:不是万能「同步立即」,需结合目标隔离域理解。

5、修订:SE-0469 Task 命名新增实例属性

作者:John McCall | 发布日期:2026 年 4 月 6 日
阅读原帖

SE-0469 已在 Swift 6.2 落地,但缺少从任意 Task 实例读取名称的公开 API。语言指导小组以轻量修订流程为 Task 增加只读 name 属性;若有重大异议可回到常规审查。

简要点评:
补全可观测性与调试场景下的常见需求,属于对既有功能的合理收尾。

推荐博文

以下三篇文章非常值得一读,适合本周「提升技能 + 开阔思路」:

Swift 脱离 Xcode:Apple 编程语言为跨平台开发者迈出最激进的一步

摘要: 报道解读 Swift 官方强化 SourceKit-LSP 与多编辑器体验(VS Code、Neovim 等):补全、宏、跨模块导航及 Swift for VS Code 扩展等,意在降低对单一 IDE 的依赖,以服务服务端与多平台生态。

从应用到服务:Swift 的演进之路

摘要: QCon London 演讲(Cory Benfield):Swift 在 Apple 内外长期用于关键服务;无 GC、零成本抽象等与 C++ / Java 互操作、服务端采纳路径等,勾勒 Swift 作为服务端语言的定位。

讲讲 Swift 中 defer 的实现原理和使用场景

摘要: 结合用法与实现思路介绍 defer,强调资源清理价值,并提醒误用(如在 defer 中不当使用控制流等)。

关于我们

Swift 社区 是由 Swift 爱好者共同维护的技术组织,主要通过微信公众号运营。

我们专注于 Swift 实战、SwiftUI、Swift 基础 三大方向,每周为你带来精选内容与最新生态资讯。

关注公众号:「Swift社区」
后台回复 "进群" 即可加入开发者交流圈。

Swift社区

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

库克成都庆 50 周年、UUID v7 与 SE-0522 | Swift 周报 Issue 97

22 Mar 15:54

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们 👋

这是 Swift 编辑组自主整理的第九十七期周报。经过一段时间的打磨,目前周报的各个模块已经逐步稳定下来,也越来越贴近大家的阅读习惯。

如果你对内容选题、结构安排或呈现方式有任何建议,非常欢迎在文末留言,你的反馈会直接影响后续周报的方向。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周发布,也非常欢迎志同道合的朋友加入编辑组。

世上最耀眼的光芒,就是你我努力拼搏的模样,不曾辜负每个朝阳,不曾荒废每个深夜,因为平凡而奋斗,也会因为奋斗而不平凡!👊👊👊

本期精选速览

  • 新闻和社区:库克成都出席苹果 50 周年庆典;否认退休传闻;苹果开发者入驻 B 站与领英迎接 WWDC
  • 提案:SE-0501、SE-0507、SE-0512、SE-0514、SE-0515、SE-0518 正式通过;SE-0520~SE-0522 正在审查;SE-0513 被拒
  • Swift 论坛:UUID v7、SE-0522 源码级警告控制、RigidArray/UniqueArray、SE-0469 Task.name 修订、Pico 裸机 Swift
  • 推荐博文:Android 瘦 LTO 与 Swift 启动优化、认证系统替换复盘、浏览器中的 Swift 应用

上期话题投票结果如下:

话题讨论

本期话题:AI 工具在你日常 Swift / iOS 研发中的主要用途是?

选项:

  1. 以检索与方案调研为主(文档、报错、最佳实践),少直接生成大块代码,对齐「AI 替代常规搜索」
  2. 以模块/样板代码与单测思路为主,架构与安全自分把关,对齐「分层使用、人机分工」
  3. 深度使用 IDE 内 AI 贯穿编码,但有团队规范与 Review,对齐「Cursor/Kiro + 制度」
  4. 会玩本地/私有模型,主要为了脱敏、内网或成本,较少用公网 API,对齐「本地 vs 云端选型」
  5. 基本不用 AI 写代码,或公司/项目禁止,仅接受传统方式

欢迎在留言区写下你的选择和理由,下期周报将公布投票结果与读者观点摘要

新闻和社区

库克现身成都出席苹果公司成立 50 周年庆典

2026 年 3 月 18 日|来源:中国新闻网

3 月 18 日,蒂姆·库克现身成都太古里 Apple 零售店,参加苹果成立 50 周年系列庆祝活动的全球第二站、亚太首站,系库克时隔三年再度来蓉。活动邀请李宇春献唱,库克称赞成都活力与文化底蕴。报道指出,成都是苹果供应链(富士康承担 iPad、MacBook 等总装)与西部消费市场的重要节点;2026 财年一季度大中华区销售额同比增长 38% 至 255 亿美元,创历史新高,苹果高管近年亦频繁来华考察,释放持续深耕中国市场的信号。

苹果 CEO 库克回应退休传闻:只是谣言,无法想象没有苹果的人生

2026 年 3 月 18 日|来源:PChome科技

库克在接受专访时否认退休传闻,称相关说法均为谣言,暂无离开苹果的计划,并表示「无法想象没有苹果的人生」。《金融时报》等曾报道董事会加速遴选继任者,古尔曼则反驳该消息过早不实;库克在 2026 年 2 月股东大会上未提退休,与高管谈及长期继任规划,暗示交接不会仓促。

迎接 2026 年全球开发者大会 WWDC,苹果开发者账号入驻 B 站和领英

2026 年 3 月 18 日|来源:IT之家

苹果为迎接 2026 年 WWDC,官方「Apple 开发者」账号已入驻 B 站与领英(LinkedIn),发布「Hello World」等视频,持续推送大会资讯、技术解析与「与苹果会面」等活动信息;账号已上线多段 2025 年 WWDC 相关内容(含 Metal 4、机器学习与 AI 框架等)。此外,苹果本月在 Instagram 推出「Hello Apple」账号,侧重品牌与产品故事传播。

提案

通过的提案

SE-0501
HTML 覆盖报告 提案已通过审查。

SE-0507
借用和突变访问器 提案已通过审查。

该提案此前已在 第九十五期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0512
记录 Mutex.withLockIfAvailable 不能虚假失败 提案已通过审查。

该提案此前已在 第九十六期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0514
Hashable 符合 Dictionary.Keys 和 EmptyCollection 提案已通过审查。

该提案此前已在 第九十六期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0515
允许 reduce 产生不可复制的结果 提案已通过审查。

该提案此前已在 第九十六期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0518
~Sendable 用于显式标记非 Sendable 类型 提案已通过审查。

该提案此前已在 第九十六期周报 的「正在审查的提案」模块中做过详细介绍。

正在审查的提案

SE-0520
在任务初始化器中使用可丢弃的结果 提案正在审查。

此前 @discardableResult 被普遍应用于所有任务初始化器,容易在无意中忽略抛出型初始化器所抛出的错误。提案建议为会抛错的任务初始化器引入新警告,帮助开发者不「漏掉」错误处理。

SE-0521
改进了不透明和存在类型可选的语法 提案正在审查。

允许直接书写 some P?any P?,语义与带括号的 (some P)?(any P)? 一致。

SE-0522
源级控制编译器警告 提案正在审查。

引入新的声明属性,用于在源码层面控制特定代码区域的编译器警告行为:作为警告、升级为错误或抑制发出。

拒绝的提案

SE-0513
API 获取当前可执行文件的路径 提案被拒绝。该提案此前已在 第九十六期周报 的「正在审查的提案」模块中做过详细介绍。

Swift 论坛

1、Pitch: UUID v7 及其他改进

作者:Tony Parker | 发布日期:2026 年 3 月 18 日
阅读原帖

本 pitch 为 Foundation 的 UUID 类型带来一系列改进。

动机:
v4 随机 UUID 在 B-tree 索引中易导致写放大;开发者需要时间有序、可排序的标识符,以及更高效的字符串与字节访问方式。

核心设计:

  • 新增 UUID v7(时间有序 UUID):Unix 时间戳编码于高位,生成单调递增、可排序的 UUID,适合数据库主键
  • 新增 UUID.Version 结构体(RawRepresentable),支持对任意 UUID 做版本自省,兼顾源码与二进制兼容
  • 新增 UUID.nil / UUID.max 哨兵值、uuidStringLowerspanSpan<UInt8> 零拷贝访问)、基于 OutputSpan 的构造等
let id = UUID.timeOrdered()
switch id.version {
case .timeOrdered: print("v7 UUID,按创建时间可排序")
case .random:      print("v4 UUID")
default:           break
}
let nilID = UUID.nil
let maxID = UUID.max

讨论亮点:

  • 版本命名争议:有成员建议采用 .v4.v7 等与规范编号一致的命名
  • UUID.nil 是否与关键字混淆:有人建议 .zero.min,Tony Parker 倾向 .min.max 对称
  • timeOrdered(using:at:) 支持注入日期,便于测试

简要点评:
这是 Foundation UUID 的一次实质性升级,v7 对后端与存储场景很重要,Span 集成也体现 Swift 对低层零拷贝 API 的持续投入。

2、SE-0522:源码级编译器警告控制

作者:Tony Allevato(Review Manager)| 发布日期:2026 年 3 月 19 日
阅读原帖

SE-0522 进入审查阶段(截至 2026 年 4 月 2 日),引入 @warn 属性,允许在源码层面对编译器诊断进行细粒度控制(升级为错误、保持警告或忽略)。

动机:
目前多依赖命令行在模块级控制警告,难以针对单个声明精细调节,易出现「要么噪音满天飞,要么整类关掉」的两难。

核心语法示例:

@warn(DeprecatedDeclaration, as: error)
func foo() { ... }

@warn(DeprecatedDeclaration, as: ignored)
func bar() { ... }

讨论亮点:

  • 命名争议:有建议改为 @diagnose 并调整参数顺序
  • 是否扩展至 remarks 与更小词法作用域(如 do {})的讨论
  • Xiaodi Wu 等对「一键忽略所有废弃警告」可能带来的滥用表示担忧

简要点评:
切中大型代码库维护痛点,设计方向合理,命名与作用域粒度仍是后续打磨重点。

3、Pitch: RigidArray 与 UniqueArray

作者:Alejandro Alonso、Karoy Lorentey | 发布日期:2026 年 3 月 19 日
阅读原帖

建议在标准库引入 RigidArrayUniqueArray,用于存放 ~Copyable 元素的堆分配数组。

动机:
Array 的写时复制(CoW)在缓冲区复制时无法「克隆」不可复制元素,易导致资源重复释放等问题。

核心设计:

  • UniqueArray<Element: ~Copyable>:动态扩容、唯一持有存储,var b = a 为移动语义
  • RigidArray<Element: ~Copyable>:固定容量,越界 fatalError,适合实时/嵌入式等对分配敏感场景
var a = UniqueArray<File>()
a.append(file1)
var b = a

var r = RigidArray<Int>(capacity: 2)
r.append(1)
r.append(2)
r.append(3) // 运行时错误:超出容量

讨论亮点:

  • UniqueArray 是否易被误解为「元素唯一」类似 Set,命名是否改为 NoncopyableArray
  • 为何不直接让 Array 支持 ~Copyable:与「消除 CoW、独占缓冲」等需求并不完全等同

简要点评:
所有权与系统编程场景的关键拼图,正式提案阶段需认真对待命名与 API 边界。

4、修订:SE-0469 Task 命名补充实例属性

作者:Konrad 'ktoso' Malawski | 发布日期:2026 年 3 月 20 日
阅读原帖

SE-0469(Task 命名) 的小幅修订:补充从 Task 实例读取名称的 API。

动机:
创建 Task 时可设名称,lldb 可展示任务树,但缺少 task.name 这类实例属性,属于明显遗漏。

拟新增 API:

extension Task {
    public var name: String?
}

讨论亮点:

  • 社区多认为宜走修订快速通道;属性只读、创建后不可变
  • 因缺少运行时入口,无法向旧版运行时回溯部署
  • 与 Instruments 教学、可观测性场景结合度高

简要点评:
小而实用的补全,有利于调试与运维侧读取任务名。

5、完全用 Swift 编写的裸机 Raspberry Pi Pico 示例(零 C 代码)

作者:Kishikawa Katsumi | 发布日期:2026 年 3 月 19 日
阅读原帖

作者分享 pico-bare-swift:基于 Embedded Swift 的 RP2040 裸机示例,除链接脚本外无 C 代码,向量表与启动逻辑亦用 Swift 编写。

动机:
展示 Swift 在裸机、无 C 运行时场景下的完整链路,供嵌入式开发者参考。

关键技术:

  • @section(SE-0492):放置向量表等到指定段
  • @_extern:引用链接脚本符号(如 __data_start
  • @c(SE-0495):导出 C 可调用符号(如 Reset_Handler

讨论亮点:
PIC 与 GOT 落在 RAM 导致启动阶段「鸡生蛋」问题,可通过链接脚本将 .got 放 ROM 等方式规避;项目含由浅入深多个示例(LED、I2C OLED 等)。

简要点评:
Embedded Swift 成熟度的重要展示,@section / @_extern / @c 组合为「尽量不用 C 写固件」提供了可复现路径。

推荐博文

以下三篇文章非常值得一读,适合本周「提升技能 + 开阔思路」:

Android 瘦 LTO 与 Swift 集成层启动优化实战指南

摘要: 本文探讨跨平台场景下,Android 端瘦 LTO 与 Apple 端 Swift 重写集成层协同优化启动性能:瘦 LTO 精简启动关键路径产物体积,Swift 原生集成层减少跨语言桥接开销,形成从编译到运行时的优化闭环,并给出差异化配置与扩展性思考。

替换认证系统背后的经验教训

摘要: Esri 工程团队复盘在 Qt Maps SDK 中替换认证系统、并与 Swift、Kotlin 等 SDK 对齐 API 的过程,涉及命名冲突、防混用、网络栈重构与测试翻倍等挑战;通过新旧系统并行发布完成迁移,对大型 SDK 底层升级与跨平台复用有参考价值。

跨平台 Swift:构建一个运行在浏览器中的 Swift 应用

摘要: 以简单计数应用为例,介绍 SwiftWasm 工具链、JavaScriptKit 与 DOM 交互、Observation 做响应式更新;直面工具链与缺少 SwiftUI 等限制,同时展示「一次编写、多端运行」的潜力,适合探索 Swift 全栈或 Web 侧的开发者。

关于我们

Swift 社区 是由 Swift 爱好者共同维护的技术组织,主要通过微信公众号运营。

我们专注于 Swift 实战、SwiftUI、Swift 基础 三大方向,每周为你带来精选内容与最新生态资讯。

关注公众号:「Swift社区」
后台回复 "进群" 即可加入开发者交流圈。

Swift社区

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

MacBook Pro 全系 M5、Continuation 与 ~Sendable | Swift 周报 Issue 96

22 Mar 15:54

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们 👋

这是 Swift 编辑组自主整理的第九十六期周报。经过一段时间的打磨,目前周报的各个模块已经逐步稳定下来,也越来越贴近大家的阅读习惯。

如果你对内容选题、结构安排或呈现方式有任何建议,非常欢迎在文末留言,你的反馈会直接影响后续周报的方向。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周发布,也非常欢迎志同道合的朋友加入编辑组。

天增岁月人增寿,春满乾坤福满路。无惊无险,又是一年,愿您一路向前又向钱,无限风采添运财!!!👊👊👊

本期精选速览

  • 新闻和社区:MacBook Pro 全系 M5 芯片 3 月 11 日开售;Apple TV / HomePod mini 或因 Siri 延期;iOS 26.3.1 发布,国行 AI 仍缺席
  • 提案:SE-0504、SE-0506、SE-0508、SE-0509 正式通过;SE-0512~SE-0519 正在审查;SE-0505 被拒
  • Swift 论坛:Continuation 安全延续、Borrow/Inout 类型、~Sendable、FOSDEM 2026 回顾、新 Codable 原型
  • 推荐博文:Swift 6 Actor 与严格并发、iOS 集成 YOLOv8、App Store 上架被拒案例

上期话题投票结果如下:

话题讨论

本期话题:苹果在本周集中发布了多款新产品,你最期待哪一款?

选项:

  1. 搭载 M5 芯片的 MacBook Pro
  2. M5 版 MacBook Air
  3. MacBook Neo —— 苹果推出的 $599 入门级笔记本
  4. iPhone 17e
  5. 新款 Studio Display / Studio Display XDR
  6. 这些产品都没有让我特别兴奋

欢迎在留言区写下你的选择和理由,下期周报将公布投票结果与读者观点摘要

新闻和社区

苹果新款 Apple TV 与 HomePod mini 缺席,或因 Siri 未就绪

2026 年 3 月 5 日|来源:IT之家

苹果本周发布了七款产品,但全新 Apple TV 和 HomePod mini 并未登场。据 Macrumors 推测,原因很可能与 Siri 有关:新一代 Apple TV 和 HomePod mini 都将支持由 Apple Intelligence 驱动的更个性化 Siri,而该功能被推迟,两款设备因此大概率延期。古尔曼称,个性化 Siri 计划随 iOS 26.5 或 iOS 27 推出;据此推算,新款 Apple TV 和 HomePod mini 可能要到今年 4 月至 9 月才会发布。现款 Apple TV 发布于 2022 年 10 月,HomePod mini 首发于 2020 年 10 月,均已到更新周期。

马年首次更新!苹果 iOS 26.3.1 正式版发布:国行用户苦等的 AI 依然缺席

2026 年 3 月 5 日|来源:快科技

苹果发布 iOS 26.3.1 正式版(版本号 23D8133),为农历马年以来首次正式版更新。本次主要为小幅功能完善与问题修复,外接显示器新增适配 2026 款 Studio Display 和 Studio Display XDR,并带来针对 iPhone 的错误修复。作为例行小版本,iOS 26.3.1 未带来重磅新功能,国行用户期待的 Apple Intelligence 依然缺席。古尔曼此前透露苹果原计划 2025 年中将 Apple Intelligence 引入中国市场,但因工程与模型等问题及监管审批多次延期,国行版至今未有时间表。

苹果最新 MacBook Pro 问世,全系配 M5 芯片,3 月 11 日开售

2026 年 3 月 3 日|来源:CNMO科技

苹果正式推出全新 14 英寸和 16 英寸 MacBook Pro,搭载 M5 Pro 和 M5 Max 芯片。John Ternus 表示,新机实现高达 4 倍于前代的 AI 处理速度、8 倍于 M1 的 AI 性能;采用融合架构,配备多核 CPU、下一代 GPU 与神经加速器。SSD 读写最高约 14.5GB/s,M5 Pro 标配 1TB、M5 Max 标配 2TB;支持 Wi-Fi 7、蓝牙 6,续航约 24 小时。提供深空黑与银色,3 月 4 日起预订,3 月 11 日起发售。

提案

通过的提案

SE-0504
任务取消屏蔽 提案已通过审查。

该提案此前已在 第九十四期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0506
高级观察跟踪 提案已通过审查。

该提案此前已在 第九十五期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0508
数组表达式尾随闭包 提案已通过审查。

该提案此前已在 第九十五期周报 的「正在审查的提案」模块中做过详细介绍。

SE-0509
Swift 软件包管理器的软件物料清单(SBOM)生成 提案已通过审查。

该提案此前已在 第九十五期周报 的「正在审查的提案」模块中做过详细介绍。

正在审查的提案

SE-0512
记录 Mutex.withLockIfAvailable 不能虚假失败 提案正在审查。

修改 Mutex.withLockIfAvailable(_:) 的文档,以明确其不会虚假失败的保证,当前实现已满足该行为。

SE-0513
API 获取当前可执行文件的路径 提案正在审查。

在 Swift 标准库中新增用于读取当前执行二进制文件路径的接口,便于需要生成子进程或向用户展示当前程序信息的场景。

SE-0514
Hashable 符合 Dictionary.Keys 和 EmptyCollection 提案正在审查。

为三种标准库集合类型添加 Hashable 一致性:Dictionary.KeysCollectionOfOneEmptyCollection

SE-0515
允许 reduce 产生不可复制的结果 提案正在审查。

提议对 Sequence.reduce(_:_:) 进行扩展:支持不可复制的初始值与结果,并以 consuming 方式接收初始值(即便其可复制)。

SE-0516
借用序列 提案正在审查。

引入新迭代协议 BorrowingSequence,适用于不可复制类型,并在部分场景下为可复制类型提供更高效的迭代;Swift 编译器将支持通过现有 for 语法使用该协议。

SE-0517
UniqueBox 提案正在审查。

在标准库中引入 UniqueBox 类型,作为在堆上唯一持有某一值的智能指针类型。

SE-0518
~Sendable 用于显式标记非 Sendable 类型 提案正在审查。

引入 ~Sendable 一致性语法,用于显式抑制 Sendable 推断,避免类型被自动判定为 Sendable,并可在不受继承影响的情况下表达“经审查确认为非 Sendable”的语义。

SE-0519
Borrow 和 Inout 类型,用于安全的一级引用 提案正在审查。

引入两种标准库类型 BorrowInout,分别表示对另一值的共享(只读)与排他(可变)安全引用。

拒绝的提案

SE-0505
执行者延迟排队 提案被拒绝。该提案此前已在 第九十四期周报 的「正在审查的提案」模块中做过详细介绍。

Swift 论坛

1、Pitch: Continuation — 安全且高性能的异步延续类型

作者:Fabian Fett, Konrad Malawski | 发布日期:2026年3月5日
阅读原帖

Fabian Fett 和 Konrad Malawski 提出了一个新的 Continuation 类型,旨在解决现有延续类型的安全性和性能问题。目前开发者在使用延续时面临两难选择:UnsafeContinuation 零开销但不安全(重复恢复会导致未定义行为,忘记恢复会导致任务永久泄漏),而 CheckedContinuation 虽然能检测错误但需要运行时开销(包括堆分配和原子操作)。

新提案引入的 Continuation<Success, Failure> 是一个 ~Copyable 类型,通过三个机制确保正确使用:

  • 移动语义(~Copyable):延续无法被复制,从两个不同代码路径恢复在编译时就会报错
  • consuming 方法:每个 resume 方法都会消费 self,第二次调用会产生编译错误
  • deinit 陷阱:如果延续被丢弃而未恢复,deinit 会调用 fatalError,成功路径使用 discard self 避免开销
// 双重恢复 - 编译时错误
actor LegacyBridge {
    var continuation: Continuation<String, Never>?
    
    func complete(with value: String) {
        if let continuation {
            continuation.resume(returning: value) // 消费 continuation
            continuation.resume(returning: value) // 编译错误:已被消费
        }
    }
}

该提案还引入了统一的 withContinuation(of:throws:) 函数,利用 SE-0413 类型化 throws 特性,用单个函数替代之前的两个函数(throwing 和 non-throwing 版本)。社区讨论集中在是否应该等待 ~Discardable 协议、文件和行号信息的权衡(增加类型大小)、以及与 call-once 闭包的配合等问题。

2、SE-0519: Borrow 和 Inout 类型 — 安全的一级引用

作者:Douglas Gregor | 发布日期:2026年3月4日
阅读原帖

SE-0519 提案进入正式审查阶段,审查期至 2026年3月17日。该提案引入 Borrow<T>Inout<T> 两个类型,为 Swift 提供安全的一级引用能力。这些类型允许开发者创建对值的借用或可变引用,而无需使用不安全指针。

Borrow<T>Inout<T> 的关键特性:

  • 都是 ~Copyable 类型,确保引用的唯一性
  • 通过 .value 属性访问底层值
  • 根据类型大小和特性选择不同的内部表示(值拷贝或指针)
  • 小于等于 4 个 Int 大小且可按位借用的类型使用值表示,其他使用指针表示
func processData(_ data: Borrow<LargeStruct>) {
    // 通过 .value 访问底层数据
    print(data.value.field)
}

社区讨论非常激烈,主要争议点包括:

  • 命名问题:John McCall 建议使用 Borrowed<T>Mutable<T>,与 Span/MutableSpan 保持一致
  • 与借用访问器提案的关系:Keith Bauer 认为两个提案不够正交,应该更深度整合
  • 隐式解引用:是否应该像 Rust 的 Deref 那样自动解引用访问成员
  • 类型系统支持:是否应该作为语言内置特性而非标准库类型

该提案依赖 SE-0507 借用访问器作为前置条件,两者共同构建 Swift 的所有权系统。

3、SE-0518: ~Sendable — 显式标记非 Sendable 类型

作者:Xiaodi Wu | 发布日期:2026年3月4日
阅读原帖

SE-0518 提案进入审查阶段,审查期至 2026年3月16日。该提案引入 ~Sendable 语法,允许开发者显式标记类型为非 Sendable,以区分"未经审查"和"经审查后确认为非 Sendable"两种情况。

在 Swift 6 的严格并发检查下,类型默认不符合 Sendable,但这种隐式行为无法表达"该类型已经过并发安全审查,确认不应该是 Sendable"的语义。~Sendable 填补了这一表达空白:

// 显式标记为非 Sendable
struct NonThreadSafeCache: ~Sendable {
    private var storage: [String: Any] = [:]
    // 该类型经过审查,确认不应跨并发域传递
}

关键规则

  • ~Sendable 必须声明在类型定义上,不能在扩展中声明
  • actor 类型不能标记为 ~Sendable(actor 始终是 Sendable)
  • 可以与条件 Sendable 共存,在特定平台上标记为非 Sendable

该提案对 Foundation 等框架特别重要,Jeremy Schonfeld 表示 Foundation 团队希望使用 -require-explicit-sendable 编译选项防止意外发布未经审查的 API,但之前无法表达"显式非 Sendable"。社区普遍支持该提案,认为这是完善 Swift 并发模型的重要一步。

4、FOSDEM 2026 Swift 社区活动回顾与照片

作者:Konrad Malawski | 发布日期:2026年3月3日
阅读原帖

Konrad Malawski 发布了 FOSDEM 2026 Swift 社区活动的总结帖。此次活动在 FOSDEM 大会前举办,汇聚了全球 Swift 开发者。Konrad 特别感谢了项目委员会成员 Karen Chu、Steven Van Impe 和 Joannis Orlandos,以及志愿者 Mona、Theo、Sam 和 Manolo。

活动亮点:

  • 所有演讲已由 Sébastien Stormacq 录制并上传至 Swift Community Meetups YouTube 频道
  • FOSDEM 主会场的 Swift 相关演讲包括:容器化的未来将 Swift 移植到 FreeBSD使用 LLDB 调试 WebAssemblySwift Package Manager 的构建时 SBOM 生成
  • 现场有大量开发者佩戴 Swift 帽子,展现了社区的活力

Konrad 分享了活动的集体照和相册链接,所有照片都可以自由使用(包括用作个人头像)。Tracy Miranda 和 Karen Chu 也在帖子中表达了对活动的感谢,期待未来能再次相聚。这次活动展示了 Swift 社区的全球化和开放性,为开发者提供了面对面交流的宝贵机会。

5、新 Codable 原型开放反馈

作者:Kevin Perry | 发布日期:2026年3月6日
阅读原帖

Kevin Perry 宣布"新 Codable"原型已在 swift-foundationexperimental/new-codable 分支上线,距离去年的"序列化与反序列化 API 未来"帖子已近一年。该原型引入了全新的序列化框架,旨在解决现有 Codable 的性能瓶颈。

核心组件

  • **CommonEncodable/CommonDecodabl...
Read more

苹果成立50周年、Dictionary API 增强、所有权模型探索 | Swift 周报 Issue 95

09 Feb 09:53

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们 👋

这是 Swift 编辑组自主整理的第九十五期周报。经过一段时间的打磨,目前周报的各个模块已经逐步稳定下来,也越来越贴近大家的阅读习惯。

如果你对内容选题、结构安排或呈现方式有任何建议,非常欢迎在文末留言,你的反馈会直接影响后续周报的方向。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周发布,也非常欢迎志同道合的朋友加入编辑组。

永远向光而行,不停留回望阴影,让琐事随风,让脚印慢慢流淌成诗篇。新的一年,就奔赴下一场热爱与山海!👊👊👊

本期精选速览

  • 新闻和社区:苹果iPhone或迎涨价,全球存储芯片短缺成焦点;苹果成立即将满50年,库克承诺将庆祝;Apple Support AI功能升级,新增诊断程序
  • 提案:SE-0502 正式通过;SE-0506 至 SE-0511 正在审查
  • Swift 论坛:Dictionary.mapValuesWithKeys、所有权注解讨论、AsyncAlgorithms withDeadline、整数泛型参数、文档参数名规范等多项讨论
  • 推荐博文:Swift 分层缓存设计、AutoreleasePool 原理实践、Subscripts 进阶指南

上期话题投票结果如下:

话题讨论

本期话题:“四天工作制”从实验走向主流,会成为未来的必然趋势吗?

2026年初,四川一家集成电路公司宣布“每周工作4天、周五带薪休假,薪酬不变。“四天工作制”从实验走向主流,会成为未来的必然趋势吗?

  1. 会,这是以人为本、增效降耗的必然未来。
  2. 不会,其成为“主流”面临难以逾越的结构性障碍,并可能产生新的不公平。

欢迎在留言区写下你的选择和理由,下期周报将公布投票结果与读者观点摘要

新闻和社区

苹果iPhone或迎涨价?全球存储芯片短缺成焦点

2026 年 2 月 6 日|来源:环球市场播报

全球存储芯片短缺冲击智能手机市场。苹果 CEO 库克表示公司有多种应对手段,但未明确是否涨价。分析师认为,苹果凭借行业影响力能从长期供应商处保障芯片供应,而中小手机厂商面临更大压力。若苹果维持原价,iPhone 市场吸引力将提升;若率先提价,则为竞争对手留下跟涨空间。IDC 数据显示,存储芯片短缺或导致 2026 年全球智能手机市场出货量出现 2023 年以来的首次同比下滑。

苹果成立即将满50年!库克已告知员工将会庆祝

2026 年 2 月 6 日|来源:快科技

苹果公司将于 4 月 1 日迎来成立 50 周年。CEO 库克已告知员工将进行庆祝活动,具体形式待揭晓。苹果公司最初名为苹果电脑公司,由史蒂夫•乔布斯、斯蒂夫•盖瑞•沃兹尼亚克和罗纳德•杰拉尔德•韦恩于 1976 年 4 月 1 日在乔布斯父母的车库里创立。2007 年推出 iPhone 后,公司更名为苹果公司。

苹果将为Apple Support带来更多AI功能 功能升级界面焕新

2026 年 2 月 4 日|来源:CNMO科技

苹果在 Apple 支持应用中测试的 AI 支持助手迎来新升级,新增诊断程序功能,可展示设备健康状况与性能表现。界面标签从 "Chat" 更改为 "Ask",并移除"早期预览版"标注,表明功能已从测试阶段转向正式发布。该助手自去年 8 月开始测试,利用 AI 技术解答设备问题并引导用户解决常见故障。

提案

通过的提案

SE-0502
从成员初始化器中排除私有初始化属性 提案已通过审查。

该提案此前已在 第九十三期周报 的「正在审查的提案」模块中做过详细介绍。本次通过,将提升类型演进的安全性,减少无意义的可见性变化对 API 的破坏。

正在审查的提案

SE-0506
高级观察跟踪 提案正在审查。

该提案为 @Observable 类型增加了两个新的观察入口点,允许更精细的控制和高级行为。这是一套用于高级用例的专业工具,例如开发中间件基础设施或小部件系统的基础。大多数使用观察的开发人员仍然最好使用 @Observable,并可能与 Observations 类型一起迭代事务值。然而,在需要的高级用例中,该提案填补了急需的空白。

SE-0507
借用和突变访问器 提案正在审查。

借用访问器——与新关键字 borrowmutate 一起引入——允许使用借用语义实现计算属性和下标。这些增强了现有的 getsetyielding borrowyielding mutate 访问器,以完成"访问者的远景"中描述的设计。

get 访问器不同,借用访问器可以在不复制的情况下公开存储的值;与 yielding borrowyielding mutate 访问器不同,借用访问器不需要协程的开销,这使得它们在不能完全内联时性能更高。借用访问器只能公开值,其存储保证在包含值的下一次突变之前是有效的。

SE-0508
数组表达式尾随闭包 提案正在审查。

该提案增加了在数组和字典等集合类型的初始化表达式中使用尾随闭包的支持,以提升集合构造时的语法一致性与可读性。

SE-0509
Swift软件包管理器的软件物料清单(SBOM)生成 提案正在审查。

SBOM(软件物料清单)提供了人工制品中包含的软件组件的详细清单。SBOM 允许开发人员改进和分析其 Swift 项目的软件供应链安全配置文件(例如,确定正在使用的依赖项是否存在漏洞)。此外,一些公司、政府和其他监管机构要求为审计目的制作 SBOM。SBOM 有两种常见的格式:CycloneDX 和 SPDX。

SE-0510
介绍 Dictionary.mapValuesWithKeys 提案正在审查。

该提案建议添加一个方法 Dictionary.mapValuesWithKeys,将 Key 传递到转换闭包。这使我们能够将字典值与其相关的密钥上下文转换,而不会产生重新分配字典存储的性能成本,这在使用 init(uniqueKeysWithValues:)reduce(into:) 时是不可避免的。

SE-0511
SwiftPM添加目标插件命令 提案正在审查。

该提案引入了一个新的 swift package add-target-plugin 命令,允许开发人员直接从命令行将插件使用情况添加到 Package.swift 清单中的现有目标中。这建立在 SE-0301 中引入的软件包编辑命令之上。

Swift论坛

1、SE-0510:为 Dictionary 增加 mapValuesWithKeys

作者:Slava Pestov | 发布日期:2026 年 2 月 13 日
阅读原帖

该提案正式进入 Swift Evolution 审查阶段,旨在为 Dictionary 添加一个新的映射方法 mapValuesWithKeys(_:),使开发者能够在转换字典值时同时访问每项对应的键(Key)。

动机:
当前的 mapValues(_:) 只给出值(Value)本身,而如果想基于键和值联合生成新值,就只能用 reduce(into:)uniqueKeysWithValues 组合这些方法,这既不直观又可能有性能开销。

主要修改示例:

extension Dictionary {
  func mapValuesWithKeys<T>(
    _ transform: (Key, Value) throws -> T
  ) rethrows -> Dictionary<Key, T>
}

这样调用时就可以直接:

let result = dict.mapValuesWithKeys { key, value in
  "\(key): \(value)"
}

讨论亮点:

  • 直接支持键值对映射,比现有 workaround 更简洁、更高效
  • 社区普遍支持这一增强,认为对日常字典转换很实用
  • 此 API 不改变现有行为,不破坏兼容性,只是新增更多表达力和便利性

简要点评:
SE-0510 让标准库更好支持基于键和值联合映射的场景,减少 boilerplate 代码,是对 Dictionary API 实用性的一次提升。

2、讨论:Escapable、Span、所有权注解等

作者:Guillaume Lessard 等 | 发布日期:2026 年 2 月 14 日
阅读原帖

这篇帖子围绕 Swift 新的所有权和内存模型展开,涉及多个关键主题。

动机:
Swift 在借用/所有权模型中引入了 Escapable 标注、Span/RawSpan 等新特性,社区需要探讨这些特性的语义、适用场景以及是否需要更统一的注解语法。

主要内容:

  • Escapable 语义讨论: 现阶段 Swift 在借用/所有权模型中有一个 Escapable 标注(用于表明值可以逃逸当前作用域),社区在探讨其适用场景、名称是否准确、以及是否需要更明确的语义
  • Span 所有权与借用规则: 讨论中提到了 Span/RawSpan 等连续内存视图的所有权语义、借用限制、可逃逸性等,在设计更安全的内存访问语义时需考虑各种边界条件
  • Ownership 注解统一: 讨论还涉及是否应统一所有权相关的注解语法、让 compiler 更清晰推断/检查借用逃逸情况,例如更精确地指定哪些闭包可以捕获某些借用
  • 未来扩展与语言方向: 社区进一步探讨了未来如何发展所有权模型、是否需要引入更细粒度的生命周期注解等

讨论亮点:

  • 支持更统一、精确的所有权/借用语义注解,以增强编译器检查和类型安全
  • 同时也有人担心语法复杂度增加,建议先在库层实践再在语言层统一
  • 讨论涉及很多低层设计权衡,是 Swift 所有权生态长期关注的方向

简要点评:
这是一场关于 Swift 借用/所有权体系(特别是 EscapableSpan、逃逸注解等)的深度讨论,对未来标准库和语言在内存安全与所有权控制的长期方向提供了有价值的参考。

3、提案:AsyncAlgorithms 增加 withDeadline

作者:Philippe Hausler | 发布日期:2026 年 2 月 15 日
阅读原帖

该提案针对 AsyncAlgorithms package,建议为现有的一些 async 算法添加一个统一支持"截止时间(deadline)"的扩展 API,便于在异步流处理、等待组合时指定超时边界。

动机:
当前用户需要在每次异步操作时手动使用 async let/Task 再加 sleep(until:) 或手动检查超时,这种模式重复且容易出错。该提案旨在让常见模式(如在流处理、合并、并发等待中加截止时间)更易用。

核心设计:

func withDeadline<T>(
    _ deadline: Instant,
    operation: () async throws -> T
) async throws -> T

在调用时可以写:

try await withDeadline(.now + .seconds(5)) {
    try await someLongRunningAsyncWork()
}

讨论亮点:

  • 与现有 Task.timeout/Task.sleep 结合如何协同
  • 如何确保 deadline 能正确 propagate 取消,并且避免丢失错误信息
  • 是否应作为全局工具函数,还是作为 AsyncAlgorithms 的扩展方法

简要点评:
为 AsyncAlgorithms 引入统一的 deadline 支持,能提升异步算法库的 ergonomics,让超时场景更易表达,是对现有异步组合操作的实用增强。

4、提案:为协议引入整数泛型参数

作者:Kavon Farvardin | 发布日期:2026 年 2 月 14 日
阅读原帖

这个 pitch 提出让 Swift 协议支持整数泛型参数(integer generic parameters),围绕最大度量、缓存大小等与"数值"语义有关的编程模式提供更灵活的抽象。

动机:
当前 Swift 泛型参数只能用于类型标识等语义,而无法在协议声明中以整数作为参数。但在很多领域(如 fixed-size buffer、矩阵库、数字算法)中,"整数参数"非常有用,可提升类型表达力和静态检查。

核心设计:

允许协议(或类型)带整数泛型参数,例如:

protocol FixedBuffer<Capacity: Int> {  }

或限制某些实现只能在指定整数字面量下实例化:

struct Matrix<Element, Rows: Int, Columns: Int> {  }

当前不允许的语法:

protocol FixedWidthVector<Length: Int> {  }

讨论亮点:

  • 如何让整数泛型参数具有约束(例如 Capacity >= 0
  • 是否引入整数类型范围约束语法
  • 与现有泛型编译器类型检查机制整合的复杂度
  • 与其他语言(如 C++ 模板整数参数)的对比

简要点评:
如果被采纳,整数泛型参数可让 Swift 在泛型编程中支持更多静态度量约束,提升性能优化和类型表达力,是向更强泛型表达迈出重要一步。

5、讨论:文档中的内部参数名 vs 外部参数名

作者:David S-Tone | 发布日期:2026 年 2 月 14 日
阅读原帖

这篇帖子探讨了 Swift 文档系统(特别是 DocC)显示函数参数名时应使用内部参数名还是外部参数名的问题,对库作者、使用者都有影响。

动机:
Swift 函数签名可以有外部参数名(用于调用时)和内部参数名(用于函数体),在文档中应展示哪个名字(外部、内部或两者)一直是社区关注点。文档显示外部参数名有助于用户理解如何调用 API,而显示内部名有助理解参数在实现中的用途。

示例:

func foo(external internalName: Int) {  }

讨论亮点:

  • DocC 当前行为: 默认展示外部参数名(调用名),有时同时展示内部名
  • 何时显示内部名: 有观点认为,对于描述实现语义、在代码示例中解释参数含义时,内部名有用
  • 一致性与清晰性: 有人建议在函数定义附近展示两者,并清楚区分用途
  • Edge Cases: 对于没有外部参数名的情况(如 _:)如何在文档中清晰呈现也是讨论点

简要点评:
这是一场关于 API 文档可读性与一致性的讨论,核心在于让 DocC 能更智能地根据场景展示适当的参数名,从而改善用户阅读接口说明时的体验。

推荐博文

以下三篇文章非常值得一读,适合本周“提升技能 + 开阔思路”:

Swift 中的分层缓存设计:平衡性能、内存与数据一致性的实践方案

摘要: 本文深入探讨了一种超越单一缓存策略的先进方案——分层缓存设计。该方案的核心智慧在于,它并非简单地将内存与磁盘缓存叠加,而是通过一个精妙的策略驱动架构,让数据在速度极致但容量有限的内存层(L1)与容量巨大但速度较慢的磁盘层(L2)之间智能流动,从而在高性能、低内存占用和数据一致性这三个往往相互矛盾的目标之间取得了优雅的平衡。

文章从统一的缓存协议抽象开始,逐步构建了一个包含内存缓存与磁盘缓存的完整Swift实现。其最具创新性的部分在于引入了一套灵活的缓存策略模式(如优先返回缓存并后台更新的cacheThenFetch,或确保数据强一致的cacheElseFetch),允许开发者根据具体业务场景(如用户头像展示或权限校验)选择最合适的数据一致性模型。此外,文中还详细阐述了热点数据自动提升、缓存预热、并发安全等高级优化技巧。

Swift 中的 AutoreleasePool:原理、实践与最佳使用场景

摘要: 文章从自动释放池的底层分页栈结构实现讲起,阐明了其通过延迟释放来管理对象生命周期的原理。重点部分在于其实战应用:例如,在包含数千次迭代的循环中处理大量图像或数据时,使用autoreleasepool可以确保临时对象在每次循环后即被及时回收,而非堆积到整个循环结束,这对于维持应用内存的平稳至关重要。此外,在单元测试中,它也是验证对象是否正确释放的得力工具。

Swift 下标(Subscripts)详解:从基础到进阶的完整指南

摘要: Swift 下标(Subscripts)远不止是访问数组和字典的语法糖,它是一种强大的语言特性,允许我们为自定义类型赋予直观的“中括号”访问能力。本文系统地介绍了下标的核心语法、从只读到读写的实现,并深入探讨了多参数下标、下标重载以及类型下标等进阶用法。

文章的精髓在于展示了如何将下标与其他现代 Swift 特性结合,创造出更具表现力和安全性的代码。例如,通过与属性包装器(Property Wrappers)结合,可以轻松实现线程安全的集合访问;与结果构造器(Result Builders)结合,则能构建出声明式的领域特定语言(DSL)。

关于我们

Swift 社区 是由 Swift 爱好者共同维护的技术组织,主要通过微信公众号运营。

我们专注于 **Swift 实战、S...

Read more

苹果 CEO 接棒人选确定、Siri 重塑 AI 聊天机器人、Swift 并发再增强 | Swift 周报 Issue 94

25 Jan 16:48

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们 👋

这是 Swift 编辑组自主整理的第九十四期周报。经过一段时间的打磨,目前周报的各个模块已经逐步稳定下来,也越来越贴近大家的阅读习惯。

如果你对内容选题、结构安排或呈现方式有任何建议,非常欢迎在文末留言,你的反馈会直接影响后续周报的方向。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周发布,也非常欢迎志同道合的朋友加入编辑组。

或许你早已明白这世间的规则本就倾斜,可那又怎样?紧握心中的天平,潇洒地对抗整个世界,帅极了!👊👊👊

本期精选速览

  • 新闻和社区:苹果下一任 CEO 基本敲定,特努斯将接棒库克;Siri 将重塑为内置 AI 聊天机器人
  • 提案:SE-0498、SE-0500 正式通过;SE-0503、SE-0504、SE-0505 正在审查
  • Swift 论坛:reduce 支持不可拷贝类型、任务取消屏蔽、RawSpan 安全 API 等多项讨论
  • 推荐博文:Swift Concurrency、Flutter iOS 混淆、iOS Accessibility 全覆盖

上期话题投票结果如下:

话题讨论

本期话题:如果脑机接口技术实现,你会选择将意识上传给机器人吗?

马斯克研制脑机接口,会将人类意识上传至机器人实现数字永生。如果将来的某一天真的实现了该项技术,那么在生命即将结束的时候,你会选择将自己的意识上传给机器人代替自己吗?

  1. 愿意,在生命的尽头,有一台机器人帮自己陪伴家人,替自己继续未完成的梦想,太赞了。
  2. 不愿意,我卑微辛苦了一辈子,死亡于我而言是一种解脱,我可不想让自己的意识囚禁在机器人身上,继续牛马的人生。
  3. 如果有越来越多的人选择上传自己的意识,那么硅基生命取代碳基生物的日期就不远啦,人类文明将会成为历史。

欢迎在留言区写下你的选择和理由,下期周报将公布投票结果与读者观点摘要

新闻和社区

苹果下一任 CEO 基本敲定:特努斯将接棒库克

2026 年 1 月 23 日|来源:快科技

今年 65 岁的库克自 2011 年从乔布斯手中接过帅印以来,带领市值从 3500 亿美元飙升至近 4 万亿美元,2018 年成为全球首家市值突破 1 万亿美元的上市公司,2022 年又达到 3 万亿美元里程碑。

现在这家巨头要选出新一任 CEO 来接替库克,特努斯(Ternus)成为热门人选。据媒体报道,苹果 CEO 库克在 2025 年最后几个月将设计团队交由特努斯负责,扩大了他的职责范围。

不止于此,苹果的软件与硬件设计团队此前由前苹果首席运营官杰夫·威廉姆斯(Jeff Williams)管理,他已于 2025 年从苹果退休。威廉姆斯退休时,苹果曾表示设计团队将直接向库克汇报,但库克已将管理权交给了特努斯。

库克此举旨在让特努斯接触公司各个业务板块,报道称特努斯将是库克退休后最有可能接任苹果 CEO 的人选,库克暂无近期退休的计划。特努斯现年 50 岁,是苹果最年轻的高管,若最终升任 CEO,有望长期执掌公司。

资料显示,特努斯 1975 年出生,毕业于宾夕法尼亚大学机械工程专业,2001 年加入苹果产品设计团队,2013 年升任硬件工程副总裁,2021 年晋升为硬件工程高级副总裁,直接向库克汇报工作。

特努斯目前领导苹果硬件工程团队,外界评价其性格沉稳、注重细节、深谙苹果供应链。分析认为,CEO 继任者要面对苹果当前复杂的处境,既需保持全球最盈利公司的地位,又要应对关税、制造业挑战、人工智能领域滞后等问题。

苹果第四季度财报前瞻:iPhone 增长放缓,聚焦服务收入

2026 年 1 月 22 日|来源:证券市场周刊

苹果迎来第四季度财报之际,市场预期其财报基调稳健,而非意外上行。硬件需求依然好坏参半,中国市场的不确定性持续存在,股价不再计入强势增长。本次财报关注的重点是执行情况、利润率和服务收入的韧性,而非充满噱头的创新。

考虑到苹果股价现在相对于其历史而言存在较高溢价,因此这次定调很重要。在此背景下,前瞻指引的基调和利润率表现将是决定当前估值是否合理的关键。

市场对于本次苹果(AAPL)财报的关注点主要是:

  • iPhone 收入趋势——企稳还是彻底下滑
  • 服务收入增长率——15% 左右的增长是最低门槛
  • 毛利率——尤其是服务与产品的对比
  • 中国市场方面——需求不确定
  • 指引基调——保守还是胸有成竹

服务收入:唯一明确的结构性增长来源

虽然 iPhone 依然约占苹果收入的一半,但服务收入仍是本财报发布之际唯一明确的结构性增长来源。Mac 和 iPad 的收入呈周期性,而且总体来说是次要方面,很难说会持续增长。

投资者将关注服务收入的增长是否会保持健康的节奏,因为这一分项正日益影响苹果盈利的稳定性。强劲的服务收入势头有助于抵消硬件收入的波动,该分项的任何放缓都难以让市场忽视。

iPhone 周期仍将为整体数据定下基调,但在现阶段,需求走向比规模更为重要。苹果可以接受平缓增长或略微走弱——但是不能出现大幅不及预期。

利润率能最清晰地反映苹果调整收入结构的成效。服务利润率若远高于硬件,这意味着即使平缓的服务增长也能对盈利情况产生巨大影响。

稳定或改善的利润率将证明议价能力和有效的成本控制,就算收入增长依然不乐观也无妨。相比之下,任何实质性的利润率压缩都会引发市场关于需求状况、竞争压力或苹果转嫁成本能力的质疑。

中国市场区域需求很关键

中国市场依然是苹果最大的不确定性,这并非因为关税或供应链。该地区的 iPhone 销量越来越多地受到本地竞争等因素的影响,使中国市场成为苹果本应稳定的区域结构中最不可预测的变量。

投资者将密切关注管理层如何谈论中国市场,而非任何单一收入数据。如果对情况的描述是企稳或改善,那么担忧会迅速消退。但更为保守的论调将引发担忧——即使报告中的收入数据坚挺也无用。

自 2012 年以来,苹果一直大量回购股票。这不仅为每股收益带来了节税优化,而且还支撑了估值,但也凸显了公司对资本回报日益仰赖,因为难以实现大规模的原生增长。

即便未宣布有任何战略调整,投资者还是希望能获得自由现金流继续稳健支持持续回购的保证。

和本次发布的诸多内容一样,管理层指引的基调可能比重磅数据更为重要。关于需求、服务收入势头、利润率和资金分配的自信措辞将强化当前叙事,而谨慎或有保留的展望则会迅速将焦点重新集中在估值和下行风险。

这才是市场真正关注的核心。投资者会关注苹果将需求定性为企稳还是面临挑战、服务收入势头是稳健还是趋缓以及 2026 年是否有加速迹象。中性指引和稳定的利润率可能会让市场无动于衷,而谨慎的指引与利润率承压将增加下行风险。

苹果计划将 Siri 重塑为内置聊天机器人

2026 年 1 月 22 日|来源:每日经济新闻

据外媒报道,苹果公司计划在今年晚些时候对 Siri 进行重大改造,将其升级为该公司的首个 AI 聊天机器人,从而与 OpenAI 和谷歌为主导的生成式 AI 竞争。

据知情人士透露,这款代号为 Campos 的聊天机器人将深度嵌入 iPhone、iPad 和 Mac 操作系统,并取代现有的 Siri 界面。聊天机器人功能将在今年晚些时候推出,公司计划在六月的全球开发者大会(WWDC)上首次展示,并在九月正式发布。

国投证券表示,AI 手机方面,根据中国报告大厅预测,2024 年 AI 手机的渗透率预计将达到 16%,预计 2026 年 AI 手机出货量超过 4.7 亿部,渗透率将达到 38%,AI 大模型与智能手机结合有望驱动新一轮换机周期,引领行业发展趋势。

提案

通过的提案

SE-0498
在运行时模块中公开 demangle 功能 提案已通过审查。

该提案此前已在 第八十九期周报 的「正在审查的提案」模块中做过详细介绍。本次通过,标志着 Swift 在运行时类型信息处理能力上又向前迈进了一步。

SE-0500
使用自定义模板改进软件包创建:SwiftPM 模板初始化 提案已通过审查。

该提案此前已在 第九十期周报 的「正在审查的提案」模块中做过详细介绍。本次通过,将显著改善 Swift 包管理器的开发体验。

正在审查的提案

SE-0503
抑制与默认值关联类型的默认一致性 提案正在审查。

关联类型定义了协议中的通用类型。您使用它们来帮助定义协议的要求。此队列有两种关联的类型,元素和分配器:

/// Queue has no reason to require Element to be Copyable.
protocol Queue<Element>: ~Copyable {
  associatedtype Element
  associatedtype Allocator = DefaultAllocator

  init()
  init(alloc: Allocator)

  mutating func push(_: Element)
  mutating func pop() -> Element
  // ...
}

第一个关联类型元素表示必须定义 push 和 pop 的值类型。

任何符合队列的类型都必须定义一个嵌套类型元素,以满足(或见证)协议对其元素的要求。这个嵌套类型可以是名为 Element 的通用参数,名为 Element 的类型别名,等等。虽然符合队列的类型是不可复制的,但其元素类型必须是可复制的:

/// error: LinkedList does not conform to Queue
/// note: Element is required to be Copyable
struct LinkedList<Element: ~Copyable>: ~Copyable, Queue {
  ...
}

这是因为在 SE-427:不可复制的通用性中,推断出 Queue.Element 既是可复制又可逃避的隐性要求,没有办法抑制它。这在实践中是一种表达性限制,因为它阻止了 Swift 程序员根据不可复制或不可逃逸的关联类型来定义协议。

SE-0504
任务取消屏蔽 提案正在审查。

该提案引入了一种暂时"忽略"任务取消的新机制,称为任务取消屏蔽。

这可用于确保无论任务的取消状态如何,某些代码都会执行。一个有用的常见情况是运行清理代码,无论任务的取消状态如何,都必须执行该代码。

该提案与最近在 SE-0493 中引入的异步递延语句很好地吻合:支持 async 调用 in defer 主体,这些语句经常用于表达此类资源清理功能。

SE-0505
执行者延迟排队 提案正在审查。

(这之前是作为自定义主和全局执行者提案的一部分提出的,但在这里已分为单独的提案。)

Swift 并发运行时提供了一些 C 入口点,允许代码在延迟后或某个时间点在全局执行器上安排作业。这些切入点并不理想;特别是:

  • swift_task_enqueueGlobalWithDelay 不支持公差,只会使用连续时钟,并且只会在全球执行器上安排
  • swift_task_enqueueGlobalWithDeadline 时间戳表示为两个 long long,一个表示秒,一个表示纳秒,使用类似的公差格式(或"回旋余地")。它仅支持内置时钟,并且只会在全局执行器上进行调度

Executor 协议已经为 Swift 代码提供了对作业进行队列的方法,它还应该为 Swift 代码提供一种延迟或截止日期进行队列的方法,这是有道理的。

Swift 论坛

1、提案:允许 reduce 产生不可拷贝(noncopyable)结果

作者:Ben Cohen | 发布日期:2026 年 1 月 12 日
阅读原帖

该 pitch 提议扩展 Sequence.reduce 系列 API,让它们能够:

  • 支持 不可拷贝类型(noncopyable types) 作为累积结果
  • 将累积初始值以 consuming(消费) 方式接收,而不是借用,从而避免不必要的拷贝

动机:
reduce 目前假定初始值是可拷贝的,会在内部复制这份值,这对于不可拷贝类型无法工作。通过让参数以 consuming 语义传入,就可以把值"拿过来"更新,而不需要借用/拷贝,从而让 reduce 可用于更多类型。

主要修改示例:

extension Sequence {
  public func reduce<Result: ~Copyable>(
    _ initialResult: consuming Result,
    _ nextPartialResult:
      (_ partialResult: consuming Result, Element) throws -> Result
  ) rethrows -> Result

  public func reduce<Result: ~Copyable>(
    into initialResult: consuming Result,
    _ updateAccumulatingResult:
      (_ partialResult: inout Result, Element) throws -> ()
  ) rethrows -> Result
}

这种写法消除了对初始值的隐式拷贝,并允许不可拷贝类型参与归约逻辑。

讨论亮点:

  • 这种更通用的 reduce 与现有习惯一致,reduce(into:) 本身已经是 consuming 的
  • 社区提出是否也应将类似语义推广到 AsyncSequence.reduce
  • 改动不会破坏现有源码兼容性,但会影响 ABI 调用约定,需要兼容入口保留

简要点评:
这是一个贴合 Swift 所有权模型演进方向的提案,将显著提升不可拷贝类型在集合操作中的可用性。

2、SE-0504:任务取消屏蔽(Task Cancellation Shields)

作者:John McCall | 发布日期:2026 年 1 月 12 日
查看提案

这个提案进入正式审查阶段,目标是为 Swift 并发提供一个 API,让你可以在某段异步代码内部屏蔽(shield)任务取消的可见性 —— 即使父任务已被取消,在这段代码里仍然不"看到"取消状态。

动机:
当前没有语言级支持使某些清理或关键代码在取消传播时仍然运行。开发者通常不得不手动创建无结构任务(unstructured task)作为 workaround,这会引入调度延迟和不确定性。shields 提供一种更精确的行为控制。

核心 API(草案):

public func withTaskCancellationShield<Value>(
  _ operation: () async throws -> Value
) async throws -> Value

以及其同步版本,用于屏蔽取消感知,同时运行代码。

社区讨论要点:

  • 有人认为这个特性对资源清理或第三方库调用非常有用
  • 如何命名(shield vs ignore vs defer)引发了深入讨论,因为要准确传达语义
  • shield 并不阻止任务实际上被取消,它只是让当前范围内调用 Task.isCancelled 返回假,从而不触发取消逻辑

简要点评:
该提案旨在增强 Swift 并发,让开发者控制任务取消的可见性,有助于更可靠的清理逻辑,但命名与语义解释仍是社区关注点。

3、提案:为 RawSpan 提供安全加载值 API

作者:Guillaume Lessard | 发布日期:2026 年 1 月 14 日
阅读原帖

这篇 pitch 提议在标准库中引入一组安全的 API 用于从 RawSpan 载入值,以及相应的从 RawSpanSpan 的安全转换。

动机:
RawSpan 目前带有一些不安全(unsafe)方法来从原始内存读取任意类型。虽然原始整数类型可以安全读取,但不安全标记让用户总是心存疑虑。该提案希望提供边界检查、安全加载值接口及控制字节序(endianness)的支持。

核心设计:

  • 引入新约束 FullyInhabited —— 强调类型对于每一种可能的位模式都有合法值
  • 为满足条件的类型(例如整数、浮点型等)提供安全 load(as:) 方法:
extension RawSpan {
  func load<T: FullyInhabited>(
    fromByteOffset: Int = 0,
    as: T.Type = T.self
  ) -> T
}
  • 对于整数类型,还提供支持指定字节序的重载版本

其他改进:

  • MutableRawSpan 增加带字节序控制的 storeBytes 方法
  • Span 添加通过 RawSpan 构造的安全初始化器

社区讨论亮点:

  • 类型是否真的能完全符合 FullyInhabited、padding 字节是否安全等问题被热议
  • 是否允许手动声明某些结构体也能安全 conform 于 FullyInhabited

简要点评:
该提案希望减少 unsafe API 使用,让 RawSpan 提供更安全、界限检查的内存读取机制,对二进制解析、网络字节操作等场景非常有用。

4、讨论:在包生态中推广 import FoundationEssentials

作者:Mads Odgaard | 发布日期:2026 年 1 月 13 日
阅读原帖

这个讨论聚焦于 Swift 包生态中 推广使用 import FoundationEssentials 代替传统 import Foundation,以减少二进制体积和依赖重量级 ICU 国际化库的问题,这在 Android 等平台对体积敏感的情境下尤为重要。

主要背景:

  • 在 Android 等环境下,包含完整的 ICU 国际化数据会显著增加最终二进制尺寸,这阻碍了 Swift 在这些生态中的采用
  • FoundationEssentials 是 Foundation 的一...
Read more

Swift 并发语义再讨论、SwiftPM 默认版本之争、后台任务写法引热议 | Swift 周报 Issue 93

11 Jan 16:04

Choose a tag to compare

前言

本期是 Swift 编辑组自主整理周报的第九十三期。
经过持续迭代,各个模块的结构与节奏已经逐步稳定。如果你对选题方向、内容深度或呈现方式有任何建议,欢迎在文末留言,我们都会认真阅读与讨论。

Swift 周报已在 GitHub 开源维护:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 Issue、投稿或推荐优质内容。目前计划 每两周周一发布,也非常欢迎志同道合的朋友加入编辑组,一起把这份社区周报长期做下去。

这世界或许千疮百孔,但总有一隅温柔在等待我们踏足。就仿若这世间没有真正的成长,只有不断破碎又重组的生命力在呐喊。👊👊👊

本期精选速览

  • 新闻和社区:苹果税全球博弈升级,谁能真正逼苹果低头?
  • 提案:成员初始化器私有属性规则调整正在审查
  • Swift 论坛:尾随闭包、参数包、mapValues 能力扩展等多项语言讨论
  • 推荐博文:Swift 跨平台、内存模型、类型系统深挖

话题讨论

当 AI 能写“正确的代码”时,人类工程师的核心价值到底是什么?

随着 AI 写代码能力不断提升,一个无法回避的问题正在摆在所有工程师面前:
如果“写对代码”不再稀缺,人类工程师还剩下什么?

我们整理了社区中最具代表性的几种观点:

  1. 系统架构与复杂度控制能力
    能在规模、性能、可演进性之间做长期取舍,而不仅仅是把功能跑通。

  2. 将模糊需求转化为“可执行规范”的能力
    定义问题本身,往往比解决问题更重要。

  3. 业务与领域理解 + 技术落地能力
    知道“该不该做”,而不只是“怎么做”。

  4. 工程判断与责任承担
    出问题时,AI 不背锅,人要。

  5. 人与 AI 的协作与编排能力
    会用 AI 写代码不重要,会“指挥 AI”才重要。

  6. 以上都重要:工程师角色正在重构
    从“写代码的人”,转向“系统设计者 + 决策者”。

欢迎在评论区投票或分享你的答案。

新闻和社区

罚款或达 380 亿美元,印度监管机构就反垄断新法与苹果交锋

2026 年 1 月 8 日|来源:财联社

印度竞争委员会(CCI)正与苹果就反垄断新法展开正面博弈。新法允许监管机构 基于企业全球营业额 而非印度本地收入计算罚款,苹果认为这一规则可能带来 高达 380 亿美元 的风险。

争议核心仍然是 App Store 抽成与平台支配地位问题。印度监管机构明确表示,仅以本地营业额计算罚款,对全球性数字平台缺乏足够威慑力。

案件预计于 1 月 27 日 在德里高等法院审理,结果或将对全球“苹果税”博弈产生连锁影响。

苹果设计师持续流失,iPhone Air 设计师加入 AI 初创公司

2026 年 1 月 8 日|来源:海蓝

继多名 AI 工程师与 UI 设计高管被 Meta 挖走后,苹果再度流失关键设计人才。
曾参与 iPhone Air 设计的 Abidur Chowdhury,于 2025 年 11 月离开苹果,加入 AI 初创公司 Hawk,担任设计主管。

这家公司由 Figure AI CEO Brett Adcock 创立,目标是研发新一代 AI 模型。
从趋势上看,AI 正在成为吸走苹果设计与工程人才的重要方向之一

苹果税全球博弈升级,谁能真正逼苹果低头?

2026 年 1 月 5 日|来源:钛媒体

这是本期最重磅的一篇深度报道。

从美国 Epic 案、欧盟 DMA、日本《特定智能手机软件竞争促进法》,到英国 15 亿英镑集体诉讼——全球监管正在围绕“苹果税”展开围剿。

但一个清晰的现实正在浮现:
苹果会让步,但几乎从不真正低头。

  • 规则被放开,但费用结构被重构
  • 抽成下降,但“核心技术费”悄然出现
  • 合规执行,但通过复杂条款抵消实质影响

文章最终将视角落回中国市场:
在全球最大 App Store 市场,中国用户与开发者仍承受着 全球最高、选择空间最小的苹果税

这场博弈,远未结束。

提案

正在审查的提案

SE-0502:从成员初始化器中排除私有初始化属性

该提案建议调整 Swift 隐式成员初始化器规则:
当新增带默认值的 private 属性时,不再因为可访问性问题而强制将成员初始化器降级为 private

核心目标是:
提升类型演进的安全性,减少无意义的可见性变化对 API 的破坏。

Swift 论坛

1、为单参数 Array / Dictionary 初始化器支持尾随闭包

作者:Jordan Rose | 发布日期:2026 年 1 月 2 日
阅读原帖

该讨论建议为 ArrayDictionary 等仅有一个参数的初始化器,引入 尾随闭包(Trailing Closure) 支持,以提升集合构造时的语法一致性与可读性。

期望支持的写法类似:

let numbers = Array<Int> {
    1
    2
    3
}

let dict = Dictionary<String, Int> {
    ("a", 1)
    ("b", 2)
}

支持者认为,这种写法在以下场景中尤为自然:

  • DSL 风格代码
  • 测试数据构造
  • @ResultBuilder 风格 API 保持一致

讨论中的主要分歧集中在:

  • 是否会与现有 Array { repeating:count: } 等初始化器产生歧义
  • 对初学者是否会造成“数组像函数”的理解成本
  • 是否应仅限于 Result Builder 场景,而非裸闭包

简要点评:
这是一个典型的“语法一致性优化”讨论,短期内不一定推进,但长期来看与 Swift DSL 化方向高度一致。

2、枚举一组元类型参数包(Parameter Pack of Metatypes)

作者:Doug Gregor | 发布日期:2025 年 12 月 29 日
阅读原帖

该讨论围绕 Swift 泛型中的 参数包(parameter pack) 展开,核心问题是:

如何在编译期或运行期,枚举一组泛型参数的 T.self

示例背景类似于:

func foo<each T>() {
    // 希望能够遍历 each T.self
}

这类能力在以下场景中非常关键:

  • 序列化 / 反序列化框架
  • 依赖注入容器
  • 反射与类型注册系统
  • 高级泛型工具库

讨论涉及到:

  • 参数包展开(pack expansion)与运行时表示的关系
  • 是否需要引入新的语法或标准库辅助 API
  • 如何在不破坏编译期优化的前提下提供枚举能力

简要点评:
这是一个明显偏“语言内核”的讨论,短期难以落地,但它是 Swift 泛型能力继续演进的关键拼图之一。

3、在更多位置支持 #warning 指令

作者:Ben Cohen | 发布日期:2026 年 1 月 1 日
阅读原帖

当前 Swift 中的 #warning 只能出现在文件顶层。
该 pitch 提议允许在 函数体、条件分支等更细粒度的位置 使用 #warning

期望支持的写法包括:

func legacyAPI() {
    #warning("This API will be removed in v2.0")
    ...
}

支持理由包括:

  • 警告可以更贴近真实问题位置
  • 比注释更容易被 CI 与编译器捕捉
  • 对技术债管理更友好

反对声音主要担心:

  • 警告泛滥导致编译输出噪音增加
  • 与现有 lint / 静态分析工具职责重叠

简要点评:
这是一个非常“工程向”的提案,小而实用,若控制得当,对大型项目维护价值很高。

4、让 Dictionary.mapValues(_:) 能访问 Key

作者:Xiaodi Wu | 发布日期:2025 年 12 月 31 日
阅读原帖

当前 Dictionary.mapValues 只能访问 value:

dict.mapValues { value in
    ...
}

该讨论提议提供一个新重载,使其同时能访问 key:

dict.mapValues { key, value in
    ...
}

核心动机是:

  • 避免为了访问 key 而退回到 map { } + 重建字典
  • 不重新 hash key 的前提下完成值变换
  • 提升性能与表达力

讨论中也涉及 API 命名与向后兼容问题。

简要点评:
这是一个典型的“补齐能力短板”的改进点,工程价值明确,社区支持度也较高。

5、社区推荐:《An Introduction to Programming Using Swift》

作者:Swift Community | 发布日期:2025 年 12 月
阅读原帖

这是一本面向初学者的 Swift 系统教材,目前已发布 Beta 0.5.1,前 17 章内容完成初步校对。

特点包括:

  • 从语言基础到控制流、集合、函数逐步展开
  • 示例代码完整、循序渐进
  • 非 Apple 官方,但社区维护质量较高

简要点评:
非常适合作为中文开发者“对照阅读”的英文学习资料。

推荐博文

深入探索 Android 版 Swift SDK

摘要:
文章从工程实践角度介绍了 Swift 在 Android 平台的可行性,包括编译链路、运行时支持以及与 Kotlin / Java 的互操作方式。作者重点分析了 Swift 作为“跨平台语言”在非 Apple 生态中的现实边界与潜力,适合关注 Swift 长期生态走向的开发者阅读。

Swift Array的写时复制

摘要:
本文通过示例和内存行为分析,详细解释了 Swift Array 的 Copy-on-Write 机制,澄清了“修改一定触发拷贝”的常见误解。对于理解性能问题、避免无意识的内存放大非常有帮助,尤其适合做过性能优化但仍心存疑惑的开发者。

swift 带有关联类型的协议不可以做类型?

摘要:
文章从编译器视角出发,解释了为什么带 associatedtype 的协议在 Swift 中不能直接作为类型使用,并结合 anysome、泛型等概念,系统梳理了 Swift 类型系统背后的设计取舍,是一篇“读完会恍然大悟”的底层向文章。

关于我们

Swift 社区 是由 Swift 爱好者共同维护的技术组织,主要通过微信公众号运营。

我们专注于 Swift 实战、SwiftUI、Swift 基础 三大方向,每周为你带来精选内容与最新生态资讯。

关注公众号:「Swift社区」
后台回复 “进群” 即可加入开发者交流圈。

Swift社区

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

苹果 AI 重组提速、Swift 标准库再扩展、ArrayBuilder 引热议 | Swift 周报 Issue 92

29 Dec 16:00

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们 👋

这是 Swift 编辑组自主整理的第九十二期周报。经过一段时间的打磨,目前周报的各个模块已经逐步稳定下来,也越来越贴近大家的阅读习惯。

如果你对内容选题、结构安排或呈现方式有任何建议,非常欢迎在文末留言,你的反馈会直接影响后续周报的方向。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周发布,也非常欢迎志同道合的朋友加入编辑组。

喜欢蝴蝶,不应该把它捏在手中,直到蝴蝶动弹不得。不妨试试低头种花,直到花儿绽放盛开,漫天蝴蝶纷至沓来。👊👊👊

本期精选速览

  • 新闻和社区:苹果重组并扩大 AI 团队,Apple Intelligence 明年初迎来关键更新
  • 提案:SE-0499 正式通过,Swift 所有权模型继续演进
  • Swift 论坛:ArrayBuilder、SwiftPM 遥测、async 重试框架等多项讨论
  • 推荐博文:并发、集合操作、SwiftUI Markdown 全覆盖

上期话题投票结果如下:

在上期投票中,近 7 成读者认为科技创新“更难了”,但同时也有不少朋友认为,智能化正在加速技术演进的节奏。

欢迎大家继续在评论区分享你的判断依据。

话题讨论

本期话题:当前最具影响力的科技趋势是什么?

你认为,正在深刻影响未来 5~10 年的技术力量是哪一个?

  1. AI 存储与半导体的爆发式增长
  2. 自动驾驶出租车(Robotaxi)走向主流
  3. AI 芯片之战(如 Nvidia vs Groq)
  4. 下一代消费级显示技术(OLED / 新型电视技术)
  5. 加密货币与区块链相关科技股票的市场情绪

欢迎在留言区写下你的选择和理由,下期周报将公布投票结果与读者观点摘要

新闻和社区

iPhone 18 Pro 系列或迎新配色,外观与硬件同步重构

在 iPhone 17 Pro 系列大幅收缩配色后,苹果并未在 Pro 产品线上“保守应对”。
最新消息显示,iPhone 18 Pro / Pro Max 正在评估 酒红色、棕色、紫色 等新配色方案。

更重要的是,外观设计可能迎来关键变化:

  • Face ID 或完全移入屏幕下方
  • 灵动岛形态可能消失
  • 前置摄像头改为左上角单孔设计

硬件层面还包括:

  • A20 Pro(台积电 2nm)
  • 新一代自研蜂窝基带
  • 升级版无线芯片

从节奏上看,iPhone 18 Pro 更像是一次 外观语言 + 底层架构的同步重构节点

苹果重组并扩大 AI 团队,Apple Intelligence 明年初迎来关键更新

尽管外界一度唱衰苹果 AI,但最新信息显示,苹果正在 系统性重组并扩大 AI 团队规模,并继续坚持“设备端 AI + 可控云端协作”的路线。

一个重要信号是:
苹果已允许 AI 研究人员公开发表论文,外界统计显示,仅公开论文中就涉及近 200 位研究人员

Apple Intelligence 的下一阶段更新预计随 iOS 26.4(2026 年初) 发布,重点包括:

  • 基于大模型的新一代 Siri
  • 更深度的 App Intents 执行能力
  • 设备端 Foundation Models 与云端模型协作

从整体策略来看,苹果并未放弃 AI,而是在以其一贯“慢但可控”的方式推进。

苹果强烈建议升级 iOS 26,应对已被利用的高危漏洞

苹果近期明确调整安全策略:
iPhone 11 及之后机型,如需获得完整安全修复,必须升级至 iOS 26。

目前至少 50% 的兼容设备仍未升级,但安全公司指出,大量漏洞已被真实利用。
系统升级,正在成为苹果推动安全防线的核心手段。

提案

通过的提案

SE-0499
在简易标准库协议中支持 ~Copyable 与 ~Escapable 提案已通过审查。

该提案此前已在 第九十期周报 的「正在审查的提案」模块中做过详细介绍。本次通过,标志着 Swift 在 所有权模型与资源管理能力 上又向前迈进了一步。

Swift 论坛

1、提案:将 ArrayBuilder 引入标准库

作者:Filip Zavolokov | 发布日期:2025 年 12 月 18 日
[阅读原帖](https://forums.swift.org/t/add-arraybuilder-to-the-standard-library/83811 "Pitch: Add @ArrayBuilder to the standard library" "提案:将 ArrayBuilder 引入标准库")

该 pitch 建议将 ArrayBuilder 这一声明式数组构造工具纳入 Swift 标准库,允许开发者像使用 @ResultBuilder 一样,通过控制流组合数组元素。

示例写法如下:

let nums = ArrayBuilder {
    if condition {
        1
    }
    for i in 0..<3 {
        i
    }
    10
}

支持者认为,这种方式能显著减少条件拼接数组时的样板代码,使集合构造更直观、可读。

讨论中的主要关注点包括:

  • 是否应同步为 Set 等其他集合提供类似构造器
  • 构建器语法对调试体验与类型推断的影响
  • 是否应以附加模块形式提供,避免标准库膨胀

简要点评:
这是一个明显改善“日常体验”的提案方向,但其适用边界和标准库定位仍需谨慎权衡。

2、提案:为 swift build 集成可选的外部遥测服务

作者:Aleksandar Prokopec | 发布日期:2025 年 12 月 18 日
阅读原帖

该提案希望为 SwiftPM 构建流程引入 可选的遥测集成机制,用于收集构建时间、缓存命中率、依赖解析行为等指标。

设计重点包括:

  • 遥测完全 非强制启用
  • 仅上报结构化、非敏感数据
  • 允许对接第三方或组织自建遥测后端

社区的主要分歧集中在隐私与复杂性:

  • 支持者认为这有助于发现真实构建瓶颈
  • 反对者担心构建系统承担过多职责

简要点评:
这是一个偏工程治理层面的提案,若设计得当,对大型项目和 CI 场景具备实际价值。

3、社区动态:我的第一个 PR 被合并进 Swift

作者:Paavo | 发布日期:2025 年 12 月 18 日
阅读原帖

这是一篇典型的社区里程碑分享帖。作者记录了自己从零开始理解 Swift 编译器、提交修复、通过 CI 并最终合并 PR 的完整过程。

简要点评:
这类帖子虽非技术提案,但对社区健康度极其重要,能有效降低“参与门槛”的心理压力。

4、介绍 Typhoon:一个轻量级 async/await 重试框架

作者:R-Mo | 发布日期:2025 年 12 月 17 日
阅读原帖

Typhoon 提供了一套 可组合、声明式的重试策略 API,专为 Swift 并发模型设计,适用于网络请求和易失败的异步操作。

let result = try await retry(
    .limit(3).backoff(exponential: .seconds(1))
) {
    try await fetchData()
}

简要点评:
这是一个贴合 async/await 使用习惯的实用工具,值得在存在大量重试逻辑的项目中关注。

5、讨论:在 Swift 生态中更好支持 zlib

作者:Douglas Gregor | 发布日期:2025 年 12 月 17 日
阅读原帖

讨论围绕 如何在 SwiftPM 和工具链层面降低 zlib 集成成本 展开,而非直接将其引入标准库。

简要点评:
这是一个典型的“生态基础设施”问题,若在 SwiftPM 层得到改善,将对跨平台与系统级项目带来长期收益。

推荐博文

以下三篇文章非常值得一读,适合本周“提升技能 + 开阔思路”:

Swift 新并发框架之 async/await

摘要: Swift async/await 是新并发框架的核心,它从根本上重塑了异步代码的写法。它将原本分散嵌套的回调逻辑,转变为直观、线性的同步风格,让代码更易读、更易维护。

其核心在于,用 async 声明可能暂停的函数,用 await 标记调用时的潜在挂起点。关键在于,挂起的是函数而非线程——函数在等待时会释放当前线程,待结果就绪后恢复执行,这避免了阻塞,但也意味着要避免在持锁时跨越 await。

在实际使用中,通过 Task 进入异步上下文,并用 MainActor 确保 UI 更新回到主线程。同时,可以利用续体(Continuation)将现有回调 API 桥接到新的 async/await 世界,实现渐进式迁移。

总的来说,async/await 以更清晰、更安全的方式解决了并发编程的典型痛点,是现代 Swift 开发中提升代码质量和开发效率的关键特性。

Swift 中 map、compactMap、flatMap 三者的核心区别

摘要: 在 Swift 中,map、compactMap 和 flatMap 都是用于对集合进行变换的高阶函数,它们各自承担着不同的数据处理职责。map 专注于一对一的元素转换,保持原有结构不变;compactMap 在转换的基础上,自动过滤掉空值,确保了数据的有效性;而 flatMap 则擅长处理嵌套结构,将多维数据展平为一维序列,简化复杂数据的处理逻辑。

这三者虽功能相似,却各有侧重,共同构成了 Swift 中强大而优雅的数据转换体系。在金融、数据聚合或多层嵌套的业务场景中,合理选择使用它们,可以让代码既安全又清晰,同时保持函数式编程的简洁风格。

SwiftUI-Markdown 渲染

摘要: 这篇文章介绍了 SwiftUI 在 iOS 15 及更高版本中原生支持 Markdown 渲染的功能,使开发者能够轻松在应用中展示格式化的文本。文章详细说明了 SwiftUI 所支持的内联 Markdown 语法,包括加粗、斜体、删除线、内联代码和链接,并提供了具体的代码示例展示如何直接在 Text 视图中使用这些语法。

此外,还介绍了通过 String 和 LocalizedStringKey 来渲染 Markdown 文本的灵活方式。虽然当前功能有一定局限,但对于大多数应用场景已足够实用,有助于开发者更专注于内容与用户体验,而无需依赖额外的富文本库。

关于我们

Swift 社区 是由 Swift 爱好者共同维护的技术组织,主要通过微信公众号运营。

我们专注于 Swift 实战、SwiftUI、Swift 基础 三大方向,每周为你带来精选内容与最新生态资讯。

关注公众号:「Swift社区」
后台回复 “进群” 即可加入开发者交流圈。

Swift社区

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

苹果内部震荡、Swift 所有权模型推进、SwiftPM 工程边界讨论 | Swift 周报 Issue 91

15 Dec 11:40

Choose a tag to compare

前言

本期是 Swift 编辑组自主整理周报的第九十一期,各个模块已逐步稳定成型。如果你对内容选题、结构或呈现方式有任何建议,欢迎在文末留言反馈。

Swift 周报已在 GitHub 开源:
https://github.com/SwiftCommunityRes/SwiftWeekly

欢迎提交 issue、投稿或推荐内容。目前计划 每两周周一发布,也非常欢迎志同道合的朋友加入编辑组。

草木需要阳光,生活需要向往。即使风雨来袭,也要绽放自己的芬芳。平凡的日子,也可以不平凡地闪耀。

周报精选

新闻和社区:苹果内部震荡加剧,产品线与人才结构同时承压

提案:HTML 覆盖率报告进入审查,SwiftPM 工作流持续完善

Swift 论坛:所有权模型、C 工件生成与轻量工具的边界讨论

推荐博文:并发、构建工具与任务取消的实践总结

话题讨论

在当今科技发展背景下,你认为科技创新是更难了,还是更容易了?

  1. 更容易了:工具、算力与开源生态降低了创新门槛,个人与小团队也能快速试错并产生影响。
  2. 更难了:底层技术与系统复杂度显著上升,真正具备颠覆性的创新需要更高投入与更长周期。

欢迎在评论区留下你的看法。

新闻和社区

iPhone Air 销量遇冷,苹果暂停超薄 iPhone 产品线

近日,多家供应链渠道确认,苹果已暂停 iPhone Air 相关产线准备工作,原计划于 2026 年更新的下一代机型被无限期搁置。这意味着,苹果极有可能放弃这条以“极致轻薄”为卖点的全新 iPhone 产品线。

iPhone Air 厚度仅 5.6mm,是目前最薄的 iPhone 机型。但为了实现这一设计目标,苹果在电池容量、摄像头配置以及整体续航表现上做出了明显取舍。尽管外观辨识度极高,但市场反馈并不理想。

供应链消息显示,负责主要代工的富士康已拆除部分相关产线,立讯精密也提前停止了后续生产准备。iPhone Air 的起售价为 999 美元,仅比同期 Pro 机型低 100 美元,这一价格区间进一步放大了用户对“性能与续航妥协”的不满。

这是苹果近年来第三次尝试拓展 iPhone 第四产品线但未能成功的案例。此前的 iPhone mini 与 Plus,均未能长期保留在主力产品序列中。

从结果来看,市场给出的信号相当明确:在当前阶段,用户对 iPhone 的核心诉求仍然集中在续航、性能与稳定体验,而非极端形态创新。

库克退休传闻再起,真正的变化发生在苹果内部结构

近日有报道称,苹果 CEO 蒂姆·库克可能于明年卸任,公司正在加速寻找继任者,硬件工程高级副总裁 John Ternus 被视为潜在接班人。

不过,知名苹果爆料人 Mark Gurman 随后明确辟谣,表示库克在明年上半年离职的说法并不属实。如果这一传闻为真,将会令苹果内部与资本市场感到震惊。

尽管如此,围绕“库克是否退休”的讨论,并未掩盖苹果正在经历的一系列深层变化。多位核心高管正处于职业生涯后期,一些关键岗位已经或正在发生交接。同时,苹果在人工智能方向的推进节奏,也持续受到外界质疑。

John Ternus 之所以被频繁提及,并不仅仅因为年龄优势。他长期负责硬件工程核心项目,在公司内部拥有较高信任度。但外界普遍认为,即便完成权力交接,新一任 CEO 的角色也更可能延续“运营与执行导向”,而非回到“产品驱动型创始人”的风格。

OpenAI 持续挖角苹果工程师,硬件与 AI 人才流动加速

相比高管层相对平稳的表象,苹果当前面临的另一项现实挑战,是 核心工程师的持续流失

最新爆料显示,仅在过去一个月内,OpenAI 的硬件相关团队就吸纳了 40 多名新成员,其中相当一部分来自苹果。这些人员覆盖的领域非常广泛,包括 iPhone 与 Mac 硬件、芯片设计、工业设计、制造工艺、音频系统、可穿戴设备以及 Vision Pro 相关方向。

随着 OpenAI 加速布局自有 AI 硬件,并计划在 2026 年推出首批产品,其对成熟消费电子人才的需求正在快速放大。多位消息人士透露,苹果内部已将这种集中式挖角视为需要严肃对待的问题。

与此同时,也有苹果设计与工程领域的新生代骨干选择加入 AI 创业公司。这一趋势被认为反映出,苹果在 AI 时代对部分基层与中层技术人才的吸引力,正在面临新的竞争压力。

提案

正在审查的提案

SE-0501 HTML 覆盖报告 提案正在审查。

目前,swift test 支持生成 JSON 覆盖报告,这非常适合摄取到各种系统中。然而,在办公桌上迭代时,JSON 不是很“人类可读”。 这建议在 swift test 中添加一个额外的命令行参数,允许呼叫者选择生成 HTML 覆盖报告。

拒绝的提案

SE-0478 默认 actor 隔离类型别名 提案被拒绝。该提案已在七十六期周报 正在审查的提案模块做了详细介绍。

Swift 论坛

1、提案:为关联类型支持抑制默认约束

作者:Kavon Farvardin | 发布日期:2025 年12 月 10 日
阅读原帖

该 pitch 关注 协议关联类型默认引入 Copyable / Escapable 约束 所带来的表达受限问题。在当前规则下,即便协议逻辑并不需要可复制能力,关联类型仍会被隐式约束。

问题示例:

protocol Queue<Element>: ~Copyable {
  associatedtype Element
  associatedtype Allocator = DefaultAllocator
}

在现行语义中,Element 会被默认要求为 Copyable,导致无法使用 ~Copyable 的元素类型实现该协议。

提案方案:

protocol Queue<Element>: ~Copyable {
  associatedtype Element: ~Copyable
  associatedtype Allocator: ~Copyable = DefaultAllocator
}

通过显式抑制默认约束,协议只声明“真正需要的能力”,让非可复制、资源型数据结构也能参与协议设计。

简要点评:
这是一次贴合所有权模型演进的底层改进,能显著提升协议在泛型与资源管理场景下的可扩展性。

2、提案:放宽 SwiftPM 对插件生成 C 产物的限制

作者:Doug Schaefer | 发布日期:2025 年 12 月 8 日
查看原帖

该提案讨论 SwiftPM 插件在构建时生成 C/C++ 头文件、module map 等工件无法参与编译 的现实问题。目前这些文件往往被忽略或当作资源处理,迫使项目将生成结果提交到仓库。

核心改动方向:

  • 将插件输出目录下的 include 目录视为公共头文件路径
  • 让生成的 C 产物像普通源码一样进入构建流程

短期方案通过固定目录名解决问题,长期目标是提供可配置路径。

简要点评:
这是一个偏工程层面的改进,但对依赖 C/C++ 绑定、自动代码生成的 Swift 包具有实际价值。

3. SE-0501:HTML 覆盖率报告(审查中)

作者:Bassam (Sam) Khouri | 发布日期:2025 年 12 月 8 日
阅读原帖

SE-0501 提议为 swift test 增加 HTML 格式的覆盖率输出,补足当前仅支持 JSON、不便人工阅读的问题。

提案要点:

  • SwiftPM 自动生成静态 HTML 覆盖率页面
  • 与现有 JSON 覆盖率机制并存
  • 更适合本地查看和 CI 构件展示

简要点评:
这是一个不破坏现有工具链、但能明显改善日常体验的增强型提案,目前正处于社区审查阶段。

4、社区动态:Swift 社区将亮相 FOSDEM 2026

作者:Swift 社区组织者 | 发布日期:2025 年 12 月 9 日
阅读原帖

Swift 社区宣布将在 FOSDEM 2026 期间举办线下交流活动,时间为 2026 年 1 月 30 日,地点在比利时布鲁塞尔。

该活动为社区主导的非官方聚会,重点围绕 Swift 在服务器、系统编程及跨平台方向的实践交流。

5、讨论:为 Swift Argument Parser 引入轻量级“兄弟库”

作者:Eliot Arntz | 发布日期:2025 年 12 月 10 日
阅读原帖

社区中提出一个想法:为 Swift Argument Parser 提供一个 更轻量、低样板的参数解析库,服务于简单 CLI 或脚本工具场景。

示意写法如下:

let args = parse(["--verbose", "-o", "file.txt"])
let verbose = args.flag("--verbose", default: false)
let output = args.option("-o", default: "out.txt")

该方案并非替代 Argument Parser,而是作为补充,降低小工具的使用成本。

简要点评:
随着 Swift 在脚本与自动化工具中的使用增加,轻量级 CLI 解析方案具备现实需求,但 API 设计仍需谨慎权衡类型安全与简洁性。

推荐博文

iOS 知识点 - 多线程总结(GCD/Operation/Swift Concurrency/线程安全/线程通信)

系统梳理了 GCD、Operation、Swift Concurrency 等多种并发模型,适合希望全面理解线程安全与任务调度策略的开发者阅读。

使用 Swift Package 插件将自定义字体加载到您的应用程序中

介绍了如何借助 Swift Package 与插件机制,在构建阶段自动生成字体加载代码,减少重复劳动并提升项目可维护性。

在 Swift 中如何取消后台任务

围绕 async/await 场景,详细讲解了多种任务取消方式及其适用场景,帮助开发者避免无效后台任务对性能的影响。

关于我们

Swift 社区 是由 Swift 爱好者共同维护的技术组织,主要通过微信公众号运营。

我们专注于 Swift 实战、SwiftUI、Swift 基础 三大方向,每周为你带来精选内容与最新生态资讯。

关注公众号:「Swift社区」
后台回复 “进群” 即可加入开发者交流圈。

Swift社区

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

从苹果创始协议拍卖到社区深水区,近期热点一次看全 | Swift 周报 issue 90

30 Nov 16:10

Choose a tag to compare

前言

嗨,Swift 社区的小伙伴们~👋

欢迎来到 第 90 期 Swift 周报

每周我们都会一起追踪 Swift 的最新进展、看看开发者们都在讨论什么、顺便学点对工作真有帮助的新东西。本期一样给你带来满满干货,但在开始之前,照例送上一段小小能量补给:

“草木需要阳光,生活需要向往。
崭新的一天,愿你从容前行,邂逅每一缕芬芳,拥抱每一份希望。”

祝大家本周都能写出顺心代码、过得比昨天更舒坦 👊

上期话题投票结果

根据投票结果大家如何看待?

本期话题讨论

【本期话题】
最近网上关于“器官移植伦理”的讨论突然炸了:
年轻人猝死、多个器官被捐献、失踪人口、孤儿院、信息化时代的隐私风险……各种新闻交织在一起,让人情绪复杂。

你怎么看待器官移植?

  1. 确实挽救了很多命,医学意义巨大。
  2. 现实中可能确实更服务“付得起代价的人”。
  3. 一旦签了捐献协议,身体如何、何时被使用,普通人无法真正掌控。
  4. 身体数据泄漏也在增加风险。
  5. 有人甚至认为:“支持自然生老病死,禁止器官移植才是最大公平。”

这个话题挺沉重,但也挺现实。

欢迎留言区说说你的观点,我们会在下期公布结果!
别只投不说~大家都爱看你们的看法。

新闻和社区

苹果创始合伙协议将拍卖,估价高达 400 万美元:最早的“苹果 DNA”重见天日

2025 年 11 月 26 日

佳士得宣布,将于 2026 年 1 月 23 日 拍卖苹果公司 1976 年创立当天签署的 原始合伙协议,估价高达 200 万至 400 万美元。这是苹果最早的法律文件之一,被视为“苹果公司真正的出生证明”。

这份三页纸的协议由 乔布斯、沃兹尼亚克、罗恩·韦恩 共同签署,记录了苹果最初的股权结构——

  • 乔布斯:45%
  • 沃兹:45%
  • 韦恩:10%

拍卖品还包含韦恩退出苹果的补充协议。1976 年成立后仅 12 天,这位第三位联合创始人以 800 美元卖掉全部股权,后续又收到 1500 美元作为补偿。韦恩后来回忆,他选择离开,是因为创业太像“过山车”,而他“不想再经历那样的风险人生”。

如果当年这 10% 股份一直保留到今天,按苹果约 4 万亿美元的最新估值,理论价值将超过 4090 亿美元。当然这只是趣味推算,毕竟四十多年间苹果经历了无数次股本变化,早期比例已无法映射到今天。

值得一提的是,这份创始协议原件在上世纪 90 年代曾被韦恩以 500 美元的价格售出。而苹果注册文件上次现身拍场是在 2011 年,当时苏富比以 近 160 万美元成交。今年佳士得将“合伙协议 + 退出协议”作为单一拍品,预计会再次引发收藏界和科技圈的广泛关注。

苹果再次小规模裁员:销售团队数十人受影响,更多业务或转向第三方渠道

2025 年 11 月 25 日

外媒披露,苹果近期对 销售部门进行小范围裁员,规模为“数十人级别”,主要集中在面向 教育、政府与学校客户 的团队。被裁员工在过去两周陆续收到通知。

这次裁员让人回想起过去三年苹果在人力上的克制策略:

  • 2022–2024 年全球科技公司连续两轮大裁员潮中(微软、亚马逊、谷歌均裁掉万人级员工),苹果却仅两度裁减几百名外包人员;
  • 2023 年苹果曾精简过零售团队;
  • 此后一直保持“冻结部分招聘、保留核心研发”路线。

苹果确认了裁员消息,并解释称此次是为了“触达更多客户而进行的团队调整”。被裁员工可在 1 个月内申请苹果内部职位;若 1 月 20 日 前未找到合适岗位,将获得补偿并正式离职。

业内普遍认为,此次调整显示苹果正加速将更多销售动作交由 第三方零售与渠道伙伴,以降低运营成本、提高效率。在全球经济整体趋紧的背景下,即便是苹果也在重新思考“直营 vs 渠道”的边界。

“库克明年退休”传闻再起?知名爆料人直接辟谣:纯属子虚乌有

2025 年 11 月 25 日

近日有多家媒体爆料称,苹果 CEO 蒂姆·库克 可能会在明年最早卸任,并已开始物色接班人,其中硬件工程高级副总裁 John Ternus 被视为“第一顺位候选”。部分报道甚至进一步声称苹果多位高管也将在明年退休,这是十年来规模最大的人事变化。

但最新消息迅速反转。著名爆料人 Mark Gurman 在最新通讯中直接否认库克将在 2025 上半年离职,表示这一传闻“完全不属实”。他强调,若库克真的在明年 6 月前退休,那将“让所有业内人士感到震惊”。

不过,Gurman 也确认了两点:

  1. Ternus 的确是最热门继任者 ——50 岁、位置关键、受到库克高度认可;
  2. 苹果高管层仍将持续震动,包括芯片负责人 Johny Srouji 在内,多名核心高管正在审视自己的下一步。

相比高管层的稳定,苹果目前面临的另一大挑战是:

OpenAI 正在“成建制”挖苹果

在过去一个月中,OpenAI 已从苹果硬件团队挖走 40 多人,涉及相机、iPhone/Mac 硬件、芯片、工业设计、制造、音频、手表、Vision Pro、人体工学等几乎所有关键部门。

自从 OpenAI 收购 Jony Ive 创办的设计公司 io 并筹备 2026 年首批 AI 硬件以来,他们正极力从苹果吸取经验与人才,有人甚至戏称“OpenAI 正在从苹果拆一个硬件部门出来”。

苹果内部人士表示,公司对 OpenAI 的激进挖角“极度不满”,并已将其视为需要优先应对的问题。

提案

本周 Swift Evolution 社区比较安静,但有两个非常关键、可能影响未来 Swift 体验的大提案正在审查中,值得所有开发者关注。

正在审查的提案

SE-0499 在简易标准库协议中支持 ~Copyable 与 ~Escapable 提案正在审查。

这是一个看似“类型系统增强”,但实际会深刻影响 Swift 模型能力的提案。

它要解决的核心问题是:
当值类型“不适合复制”或“不该逃逸”时,标准库协议是否应该支持?

为此,提案将以下常用协议全部标记为继承自 non-copyable / non-escapable:

  • EquatableComparableHashable
  • CustomStringConvertibleCustomDebugStringConvertible
  • TextOutputStreamTextOutputStreamable
  • 以及 LosslessStringConvertible

并同步更新:

  • Optional
  • Result

以便它们对包含 non-copyable 值的场景也能安全工作。

SE-0500 使用自定义模板改进软件包创建:SwiftPM 模板初始化 提案正在审查。

目前 swift package init 功能比较简单,新的提案则让模板也能:

  • 像普通 Package 一样分发
  • 包含自定义逻辑
  • 按照规则生成不同结构
  • 满足公司级工程的初始化规范
  • 直接通过标准命令行流程运行

这意味着什么?

SwiftPM 的脚手架能力终于追上现代生态了!
未来你可以:

  • 一键生成符合公司架构规范的项目
  • 创建专属 UI 组件库模板
  • 搭建 Server Swift 工程模板
  • 为 Swift for Web、SwiftData App、Macro 项目做脚手架

SwiftPM 将从“包管理器”正式升级为“工程生成器”。

Swift论坛

1、Task Cancellation Shields(任务取消屏蔽)

作者:Konrad ‘ktoso’ Malawski | 发布日期:2025 年 11 月 23 日
阅读原帖

社区最近在热议一个非常“缺它不行”的新能力:Task Cancellation Shields。它的核心目标是解决一个长期痛点——某些代码即使任务被取消,也必须完整执行(比如清理、资源释放、状态同步)。目前 Swift 的协作式取消机制会在 await 或显式检查时抛出错误,导致清理代码可能在取消过程中被打断。

核心要点:

  • 提案希望引入一个新的区块 API,例如:

    await withTaskCancellationShield {
        // 这段逻辑不受取消影响
    }
  • Shield 区块内部观察不到取消,Task.isCancelled 为 false,不会抛出 CancellationError

  • 子任务仍会继承真实取消状态,避免破坏结构化并发。

  • 最典型场景:defer、文件/网络句柄清理、数据库事务收尾等。

为什么值得关注:

这是“结构化并发”缺失的一块基础设施,对框架作者尤其重要。社区普遍认为,这个能力可以让 Swift 并发在“取消”场景下更可控、更健壮。

2、Inspect Task Execution Time —— 测量 async 任务执行时长

作者:oldbitpicker | 发布日期:2025 年 11 月 22 日
阅读原帖

这条讨论聚焦于一个很实际的问题:有没有办法直接从 Swift 并发系统中拿到“某个 async 任务实际跑了多久”?原帖作者希望用于分析性能瓶颈,但 Swift 当前没有直接公开类似的 API。

讨论亮点:

  • 多位社区成员表示:目前 没有 获取任务运行时间的官方入口(即不存在 Task-level profiler API)。

  • 建议方式仍是 自己记录时间戳

    let start = ContinuousClock.now
    try await work()
    let duration = start.duration(to: .now)
  • 更深入的需求(例如监控 executor 调度、挂起点次数、执行队列切换)属于 runtime 层。目前 Swift 还未向用户暴露此类信息。

  • 有人提出可借助 Instruments 或 Swift concurrency tracing,但那属于外部工具,不是语言级 API。

小结:

想要“任务运行时长”这种信息,现阶段仍需要手动计时。社区普遍期待 Swift 未来能提供更细粒度的“任务级 Profiling 支持”。

3、Potential Suspension Point —— 静态分析 async 暂停点的提议

作者:Yuki | 发布日期:2025 年 11 月 20 日
阅读原帖

这是一个和 async/await 编译器相关的提案:希望 Swift 提供“静态标记可能发生挂起的位置”的能力,类似 await? 或某种编译器注解,让开发者更容易发现函数内部可能导致 actor-hop 或切换执行点的地方。

核心要点:

  • 现状:await 本身只是一个语法标记,并不能告诉你实际是否会挂起。比如一些函数可能 在某些条件下挂起,某些条件下完全同步返回。

  • 提案希望引入一种标记方式,让开发者在阅读代码时能更明确知道“这里可能会切换 executor”。

  • 作用包括:

    • 优化高性能路径
    • 避免意外的 actor 隔离切换
    • 更精准的调试与性能分析
  • 有社区成员担心:这可能让 async 编程模型变复杂,不利于保持 Swift 并发的“易学”目标。

小结:

提案本身还在讨论早期,但它确实触及了 Swift 并发的“透明度”问题——开发者越来越需要知道 async 代码到底会不会真的挂起。

4、Running func on Background —— 在后台线程运行普通函数

作者:EngOmarElsayed | 发布日期:2025 年 11 月 23 日
阅读原帖

这篇讨论来自一个非常实际的需求:
当调用方是 @MainActor 时,如果我只是想把一个“普通同步函数”丢到后台线程执行,有没有简单优雅的方式?

典型场景:analytics、日志、轻量后台处理 —— 不想阻塞 UI,也懒得把函数整个改成 async。

讨论重点:

  • 最简单直接的方式仍然是:

    public func identify(event: IdentifyEvent) {
      Task.detached {
        self.identifySynchronous(event: event)
      }
    }

    Task.detached 不继承 MainActor,因此能直接让同步函数跑在后台 executor。

  • 若需要 async 能力,可包一层非 MainActor 的 wrapper(@concurrent 标注)。

  • 若任务多且需要顺序一致性,建议使用:

    • 事件队列
    • AsyncStream
    • 专门的后台消费器
  • 社区的共识:

    你想“跳出一个 actor”,就必然涉及“异步”。这是 async 模型的底层语义。

小结:

如果是 fire-and-forget 后台任务,Task.detached 是最实用的方案;如果你有更复杂的事件流,AsyncStream/队列模型更稳。

5、SwiftPM 默认 macOS 版本过低?社区热议“是否需要提升最低版本要求”

作者:MahdiBM | 发布日期:2025 年 11 月 27 日
阅读原帖

这一讨论触及 Swift 包生态的一个关键问题:
SwiftPM 目前的默认 macOS 最低版本太老,会阻碍库作者使用现代语言特性。

例如在 swift-nio 中使用最新的标准库类型(如 Span)时,因为 SwiftPM 默认给出的 macOS 版本过旧,导致这些现代 API 在默认环境下不可用。

讨论亮点:

  • 很多开发者认为:SwiftPM 的默认 macOS 版本应该提升(例如 10.15+)。
    好处包括:

    • 更容易使用现代语言/运行时特性
    • 减少 availability 判断
    • 减少 fallback 代码
    • 提升 Swift 生态整体“现代化”程度
  • 也有人指出:

    • 你仍可以在 Package.swift 中手动指定平台
    • 旧系统支持对一些项目仍然有必要
  • 主要挑战来自依赖链:
    如果基础库的最低版本提升,依赖它的所有包都必须跟着升级。

小结:

这项讨论反映了 Swift 生态的一个真实矛盾:
“保留旧系统兼容性” vs “拥抱现代语言功能”。
随着新标准库特性不断增加,“提升默认 macOS 最低版本”会越来越像是生态必须面对的方向。

推荐博文

以下三篇文章非常值得一读,适合本周“提升技能 + 开阔思路”:

使用 Foundation Models 框架在 Swift 中构建AI功能

摘要: 想在 App 里加入本地 AI 能力?这篇文章手把手教你使用苹果 Foundation Models 框架,实现文本生成、数据解析等AI功能,全程保护用户隐私,代码示例可直接复用。

iOS 开发者的安全加固工具,从源码到成品 IPA 的多层防护体系实践

摘要: 覆盖从源码保护到 IPA 加固的完整安全方案。文章提供可落地的工具链和实操建议,特别适合需要保护核心代码与业务逻辑的团队参考。

手游频繁崩溃闪退原因分析与 iOS 崩溃日志解析方法

摘要: 针对游戏和高性能App的崩溃难题,给出清晰的问题分类和解决方案。重点演示如何使用symbolicatecrash和atos快速定位问题,实用性强。

关于我们

这是一份由 Swift 爱好者驱动的社区周报,希望用最轻松的方式让你掌握 Swift 世界所有重要变化。

关注公众号:「Swift社区」
后台回复 “进群” 即可加入开发者交流圈。

Swift社区

如果你有想分享的内容、踩坑故事、或者想投稿的文章,欢迎在留言区告诉我们。

下期见!