肘子的 Swift 记事本 | Fatbobman's Blog

中文首页|肘子的 Swift 记事本|Fatbobman's Blog,分享与 Swift、SwiftUI、Core Data、Swift Data 有关的内容,也会涉及开发工具、AI 等其他内容。全部文章均为原创,转载需联系本人

Xcode 迈入 Agent 时代 - 肘子的 Swift 周报 #122

Xcode 26.3 版本的到来,几乎没有任何预热,却用实际行动回应了这些质疑。通过集成 Claude Code / Codex,苹果给出的答案很直接:只要策略得当,Xcode 依然是苹果生态中极具潜力的开发环境。这一次,Xcode 并没有简单地塞进一个 CLI 工具面板,而是引入了一套原生的 Xcode Tools(MCP),并配合 Swift 6、SwiftUI、SwiftData 等官方技术文档,形成了高度一致、贴合最新实践的整体体验。即便对于已经熟练使用 CLI + XcodeBuildMCP + 各类 Skills 的开发者而言,这套原生方案依然具备很强的竞争力——尤其是几乎为零的配置成本,这对绝大多数开发者来说意义重大。

2026/2/9
articleCard.readMore

Xcode 26.3 + Claude Agent:模型替换、MCP、Skill 与自适应配置

出乎意料,Xcode 26.3 版本中苹果直接提供了对 Claude Code/Codex 的支持。自此,开发者终于可以在 Xcode 中优雅地使用原生 AI Agent 了。 这两天我针对新版本进行了一系列尝试,包括配置 MCP、以及编写自适应的 `CLAUDE.md`。本文将以 Claude Code 为例,分享一些文档之外的技巧。

2026/2/6
articleCard.readMore

macOS 录屏软件开发实录:从像素抓取到元数据重现

视频正在取代文字成为主流的表达方式,而好工具是创作的加速器。macOS 录屏软件 ScreenSage Pro 的独立开发者 Sintone 分享了从像素抓取到元数据重现的全过程。从屏幕录制、元数据捕获,到高性能视频合成,他详述了开发中的挑战与解决方案。

2026/2/4
articleCard.readMore

变幻的光影,不变的干草堆 - 肘子的 Swift 周报 #121

两周前,借着参加 iOS Conf SG 2026 的契机,我造访了新加坡国立美术馆,并有幸参观了《走进现代:波士顿美术博物馆印象派大师展》。尽管此前也看过不少优秀的展览,但这次经历仍带来了某种不同寻常的触动。

2026/2/2
articleCard.readMore

Skip 开源:从“卖工具”到“卖信任”的豪赌 - 肘子的 Swift 周报 #120

Skip Tools 日前宣布全面免费并开源核心引擎 skipstone。这意味着 Skip 彻底改变了经营方式:从“卖产品”转向“卖服务+社区赞助”。这次变化,既有对之前商业模式执行不佳而被迫调整的无奈,也体现了 Skip 团队的果敢——在当前 AI 盛行、开发工具格局固化的背景下,主动求变,力求突破。

2026/1/26
articleCard.readMore

isolated(any) 与 #isolation:让 Swift 闭包自动继承隔离域

Swift 6 为并发引入了许多新功能与关键字。虽然其中不少内容在日常开发中可能鲜少用到,但一旦遭遇特定场景,若对这些新概念缺乏了解,即便有 AI 辅助也可能陷入僵局。本文将通过一个在开发测试中遇到的实际并发问题,来介绍如何利用 **`@isolated(any)`** 以及 **`#isolation`** 宏,实现函数的隔离域继承,从而让编译器自动推断闭包的运行环境。

2026/1/21
articleCard.readMore

从 Anthropic 封杀与苹果谷歌结盟,看 AI 护城河的构建 - 肘子的 Swift 周报 #119

2026 年伊始,AI 界便迎来了两记重磅消息。首先是 Anthropic 痛下杀手,禁止第三方命令行工具(CLI)和“套壳”软件调用 Claude 的个人订阅账号(Pro/Max),紧接着,苹果正式确认与谷歌达成深度合作。

2026/1/19
articleCard.readMore

在 tvOS 上活下來:一個非典型播放器的工程實錄

tvOS 绝非 iPad 的放大版。本文是 Syncnext 播放器的工程实录,深入解析 Apple TV 开发的真实陷阱:从 Focus 焦点机制、严苛的存储限制,到 SwiftUI 填坑与 AVPlayer 深度调优,助开发者在 tvOS 平台上“活下来”

2026/1/14
articleCard.readMore

AT 的人生未必比 MT 更好 - 肘子的 Swift 周报 #118

学车时我开的是手动挡,起初因为技术生疏,常搞得手忙脚乱,所以第一台车就直接选了自动挡。但开了几年,我开始追求那种完全掌控的驾驶感,于是又增购了一台手动挡。遗憾的是,随着交通日益拥堵,换挡的乐趣逐渐被疲惫抵消,最终这台车也被冷落。算起来,我已经快二十年没认真开过手动挡了,但内心深处,我仍会时不时地怀念那段“人车合一”的时光。

2026/1/12
articleCard.readMore

告别“可移植汇编”:我已让 Swift 在 MCU 上运行七年

在苹果官方正式开启嵌入式支持之前,Andy Liu 和他的 MadMachine 团队就已经在这个领域深耕多年。他们认为,在功能日益复杂的开发场景中,Swift 的现代语言特性将展现出巨大的优势。在数年前便选择了一套与社区主流不同的理念与技术路线。 我邀请 Andy 分享他们过去几年在 Swift 嵌入式开发中的实战经历分享出来。这既是一份宝贵的历史记录,也希望能为社区提供一个不一样的思考维度。

2026/1/7
articleCard.readMore

独立开发者的试炼:Zipic 从 0 到 1 的产品化之路

做独立产品这件事,说起来容易,真动手了才知道水有多深。这是一个独立开发者将职场小需求变成主力产品的真实故事。我们将跟随 Zipic 作者十里的视角,一起回顾产品从 0 到 1 的全过程。本篇聚焦产品设计与决策思考。

2025/12/22
articleCard.readMore

逃离 Mac App Store:如何从零构建独立应用的分发与售卖体系

Mac App Store 固然使用简单,但可能并不适合所有的产品。本文中,我们将跟随 Zipic 作者十里的视角,来解决一款 macOS 独立应用的分发与售卖问题。

2025/12/22
articleCard.readMore

解决 SwiftUI 痛点与性能瓶颈:Zipic 开发技术复盘

图片压缩软件还有什么技术难点?本文充满了硬核、实用的 macOS 开发经验,从 SwiftUI 的组件适配到 Core Graphics 的底层应用,从 Raycast 扩展的集成到 PDF 压缩的实现,不仅解决了性能瓶颈,更让原生体验达到了极致。

2025/12/22
articleCard.readMore

【小贴士】为什么父视图无法修改子视图的 @State

在 init 中给 @State 赋值后,为什么父视图更新数据时子视图无反应?本文解析 SwiftUI 状态管理的生命周期机制与正确的数据传递方式。

2025/12/18
articleCard.readMore

我和 CloudKit 的这八年:从开源 IceCream 到商业应用实战

IceCream 作者 Cai Yue 分享他与 CloudKit 八年的开发历程:从 2017 年开源 IceCream 并获得 Apple 官方认可,到将 CloudKit 应用于 Music Mate 和 Setlists 等商业项目的实战经验。文章深入探讨了 CloudKit 的核心优势、关键局限以及进阶玩法。通过真实案例展示如何在生产环境中高效使用 CloudKit,为苹果生态开发者提供避坑指南和最佳实践。

2025/12/17
articleCard.readMore

从 YaoYao 到 Tooboo:watchOS 开发避坑与实战

作为 YaoYao 和 Tooboo 的作者,Haozes 分享了 watchOS 开发中关于版本兼容、App 唤起通信、数据同步、重启恢复、内存泄露和电量优化等高质量实战经验。这篇文章涵盖了从 HealthKit 到 WCSession、从 HKWorkoutSession 到 TimelineSchedule 的完整开发避坑与性能调优指南,对于正在开发或计划开发 Apple Watch 应用的开发者具有极高参考价值。

2025/12/10
articleCard.readMore

【小贴士】Partytown 实战:修复 GTM 自定义事件与 dataLayer 失效问题

使用 Partytown 优化性能后,GA4 和 GTM 事件无法上报?详解如何在 Astro 中配置 forward 属性,让主线程的 gtag 和 dataLayer.push 正常通讯。

2025/12/8
articleCard.readMore

【小贴士】Swift 6 编译加速:启用 Swift-Syntax 预构建 (Prebuilts)

Swift 宏编译太慢?在 Swift 6.1+ 中启用 Swift-Syntax 预构建 (Prebuilts),一行命令显著减少 Xcode 构建时间,提升开发效率。

2025/6/6
articleCard.readMore

【小贴士】Swift 模块化:使用 package 关键字实现 Target 间安全共享

如何在 Swift Package 的多个 Target 间共享代码却不暴露给外部?详解 package 访问修饰符,填补 internal 与 public 间的权限空白,提升模块封装性。

2025/5/8
articleCard.readMore

【小贴士】Monorepo 实战:解决 VSCode/Cursor 中 SwiftLint 配置失效问题

在 VSCode 或 Cursor 中开发 Swift Monorepo 项目时,SwiftLint 无法读取根目录配置?通过设置 configSearchPaths 和明确包含路径,轻松实现多包共享 Lint 规则。

2025/4/24
articleCard.readMore

【小贴士】VSCode/Cursor 测试 Core Data:手动编译 xcdatamodeld 指南

在 VSCode/Cursor 中运行 Core Data 单元测试报错?这是因为 xcdatamodeld 未被自动编译。学习配置 Xcode 工具链并使用 xcrun momc 手动生成 momd 文件,快速修复测试环境。

2025/4/15
articleCard.readMore