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

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

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

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

2026/1/12
articleCard.readMore

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

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

2026/1/7
articleCard.readMore

2026:当 AI 隐入工作流,你准备好了吗? - 肘子的 Swift 周报 #117

大家新年好!在过去的几年中,AI 始终占据着科技界最耀眼的 C 位。但站在 2026 年的起点回看,我发现一个显著的转折:从 2025 年末开始,人们对“万亿参数”或“榜单跑分”的狂热逐渐褪去,取而代之的是对 AI 工作流深耕细作的冷静与实战。

2026/1/5
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

Swift、SwiftUI 与 SwiftData:走向成熟的 2025 - 肘子的 Swift 周报 #116

在过去的几天里,我回顾了这一年来 Swift、SwiftUI 以及 SwiftData 的演进。总的感觉是:惊喜虽不算多,但“成熟感”却在不经意间扑面而来。

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

周日小插曲 - 肘子的 Swift 周报 #115

周日下午,我正准备周一的周报。起身的瞬间,右手小指似乎碰到了什么,然后它就伸不直了。

2025/12/15
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 周报 #114

关注我博客的读者可能留意到,最近一段时间我较少发表个人的作品,取而代之的是,我陆续发布了多篇来自不同开发者的客座文章。没错,这是我近期发起的一项特别企划——邀请那些在各自领域深耕且卓有建树的开发者,分享他们的实战经历、独家秘籍、独特视角以及心路历程。

2025/12/8
articleCard.readMore

SwiftUI 图文混排深度剖析:超越 AttributedString —— MarkdownView 与 RichText 的实现

作为 MarkdownView 和 RichText 的作者,LiYanan 不仅解决了 SwiftUI 在 Markdown 渲染与图文混排上的诸多痛点,其方案更被 X (Grok) 等重量级产品采用。在本文中,我邀请他毫无保留地分享了这一路的技术演进——从最初基于 Layout 协议的尝试,到踩坑 TextRenderer,最终通过底层 TextKit 实现完美的交互体验。这是一份关于坚持、成长与硬核技术的深度复盘,也是当前互联网上关于 SwiftUI 文本渲染领域不可多得的稀缺资料。

2025/12/3
articleCard.readMore

当我决定同时做 iOS 和 Android:独立开发者的真实双平台之路

这是一位独立开发者跨上双平台之路的完整记录:从 iOS 的舒适区,到 Android 的碎片化现实;从协作模式、交互差异,到商店后台、支付体系和中国安卓生态的真实挑战。产品在变,他的理解和心态也在变。或许能让仍只在苹果生态中的你看到另一条可能的路径。

2025/11/26
articleCard.readMore

深入 iMessage 底层:一个 Agent 是如何诞生的

iMessage 深度集成在 Apple 生态中,却从未提供官方 API。本文邀请 imessage-kit 作者 LingJueYa 分享如何突破这一限制,让 AI Agent 进入 iMessage。文章详细介绍了从解析 SQLite 数据库、处理 Core Data 时间戳、绕过 macOS 沙盒限制,到用 AppleScript 实现消息发送的完整技术方案,以及在构建过程中踩过的坑与解决之道。

2025/11/19
articleCard.readMore

Grow on iOS 26:UIKit + SwiftUI 混合架构下的 Liquid Glass 适配实战

Grow 是一款在 173 个国家和地区获得 App Store 编辑推荐、拥有超过 18 万五星评价的健康管理应用。在适配 iOS 26 的 Liquid Glass 设计语言时,团队遇到了不少挑战:如何在 UIKit + SwiftUI 混合架构下实现原生的 morph 效果?如何精确控制 Scroll Edge Effect?如何处理自定义导航栏元素的动态尺寸?我邀请了 Grow 的开发者之一 Shuhari,分享团队在这次适配过程中的实战经验。文章涵盖 Sheet、Navigation、Popover 等场景的改造方案,深入探讨 UIBarButtonItem 尺寸计算、CABackdropLayer 副作用处理等底层细节,还展示了如何利用 Core Text 创造“玻璃文字”效果。

2025/11/12
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