<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>肘子的 Swift 记事本 ｜ Fatbobman&apos;s Blog</title><description>中文首页｜肘子的 Swift 记事本｜Fatbobman&apos;s Blog，分享与 Swift、SwiftUI、Core Data、Swift Data 有关的内容，也会涉及开发工具、AI 等其他内容。全部文章均为原创，转载需联系本人</description><link>https://fatbobman.com/</link><language>zh</language><follow_challenge><feedId>55086689794490368</feedId><userId>60878761419746304</userId></follow_challenge><item><title>让 AI 从称手到称心 - 肘子的 Swift 周报 #134</title><link>https://fatbobman.com/zh/weekly/issue-134/</link><guid isPermaLink="true">https://fatbobman.com/zh/weekly/issue-134/</guid><description>从开始深度使用 AI 工具至今已有三年。三年间，我亲历了 AI 能力的飞跃，也越来越清晰地触摸到它的边界。截至目前，AI 早已是非常出色的效率工具，但如何让它写出真正“称心”——符合我个人风格、想法与设计哲学——的代码，仍是一个不小的挑战。</description><pubDate>Mon, 04 May 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;从开始深度使用 AI 工具至今已有三年。三年间，我亲历了 AI 能力的飞跃，也越来越清晰地触摸到它的边界。截至目前，AI 早已是非常出色的效率工具，但如何让它写出真正“称心”——符合我个人风格、想法与设计哲学——的代码，仍是一个不小的挑战。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/weekly/issue-134/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>Swift 并发正被更广泛地接纳 - 肘子的 Swift 周报 #133</title><link>https://fatbobman.com/zh/weekly/issue-133/</link><guid isPermaLink="true">https://fatbobman.com/zh/weekly/issue-133/</guid><description>从 Swift 5.5 引入符合现代编程思想的新并发模型算起，一转眼快 5 年了。从 5.5 到目前的 6.3，Swift 社区一直在采用小步迭代的方式，积极推进并发 API 的演进。但在应对过多的新关键字、复杂的隔离概念以及一些容易引发困扰的“反模式”时，这个过程对开发者来说并不算顺利。</description><pubDate>Mon, 27 Apr 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;从 Swift 5.5 引入符合现代编程思想的新并发模型算起，一转眼快 5 年了。从 5.5 到目前的 6.3，Swift 社区一直在采用小步迭代的方式，积极推进并发 API 的演进。但在应对过多的新关键字、复杂的隔离概念以及一些容易引发困扰的“反模式”时，这个过程对开发者来说并不算顺利。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/weekly/issue-133/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>从 OpenSwiftUI 到 DanceUI：换个方式 Dive SwiftUI - 肘子的 Swift 周报 #132</title><link>https://fatbobman.com/zh/weekly/issue-132/</link><guid isPermaLink="true">https://fatbobman.com/zh/weekly/issue-132/</guid><description>从 2019 年问世算起，SwiftUI 已经快七年了。它早已脱去了最初几年的稚气，逐渐成为苹果生态开发者的基础能力之一。不过，SwiftUI 的闭源属性也意味着，它的很多运行机制始终不透明。开发者在使用时固然能感受到它的表达优势，但一旦遇到问题，往往很难进一步追踪原因。这种特性也让 SwiftUI 在 AI 辅助编程时代显得有些“吃亏”——相比那些长期暴露在社区讨论、源码和文档中的技术，大模型能参考的高质量材料终究有限。</description><pubDate>Mon, 20 Apr 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;从 2019 年问世算起，SwiftUI 已经快七年了。它早已脱去了最初几年的稚气，逐渐成为苹果生态开发者的基础能力之一。不过，SwiftUI 的闭源属性也意味着，它的很多运行机制始终不透明。开发者在使用时固然能感受到它的表达优势，但一旦遇到问题，往往很难进一步追踪原因。这种特性也让 SwiftUI 在 AI 辅助编程时代显得有些“吃亏”——相比那些长期暴露在社区讨论、源码和文档中的技术，大模型能参考的高质量材料终究有限。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/weekly/issue-132/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>被 Vibe 摧毁的版权壁垒，与开发者的新护城河 - 肘子的 Swift 周报 #131</title><link>https://fatbobman.com/zh/weekly/issue-131/</link><guid isPermaLink="true">https://fatbobman.com/zh/weekly/issue-131/</guid><description>Anthropic 不久前宣布，由于其最新模型 Mythos 在网络安全与代码漏洞挖掘方面的能力“过于强大”，已达到令人不安的程度，因此采取了极为罕见的克制措施：仅向 Project Glasswing 内的少数关键基础设施企业开放，不面向公众发布，普通开发者也无法通过 API 调用</description><pubDate>Mon, 13 Apr 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anthropic 不久前宣布，由于其最新模型 Mythos 在网络安全与代码漏洞挖掘方面的能力“过于强大”，已达到令人不安的程度，因此采取了极为罕见的克制措施：仅向 Project Glasswing 内的少数关键基础设施企业开放，不面向公众发布，普通开发者也无法通过 API 调用&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/weekly/issue-131/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>苹果的罕见妥协：当高危漏洞遇上“拒升”潮 - 肘子的 Swift 周报 #130</title><link>https://fatbobman.com/zh/weekly/issue-130/</link><guid isPermaLink="true">https://fatbobman.com/zh/weekly/issue-130/</guid><description>对于 iOS 用户来说，最近或多或少都会看到与 Coruna、DarkSword 有关的高危漏洞消息。两个攻击链均采用水坑攻击的方式，攻击者无需受害者进行任何交互，仅需访问一个被植入恶意 iframe 的合法网站或加载恶意广告，即可触发完整的攻击链，在窃取资料后自动清理攻击痕迹。由于工具链利用的漏洞存在于 iOS 13 至 18.7 的绝大多数版本中，截止目前，已有上亿用户受到影响。</description><pubDate>Mon, 06 Apr 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;对于 iOS 用户来说，最近或多或少都会看到与 Coruna、DarkSword 有关的高危漏洞消息。两个攻击链均采用水坑攻击的方式，攻击者无需受害者进行任何交互，仅需访问一个被植入恶意 iframe 的合法网站或加载恶意广告，即可触发完整的攻击链，在窃取资料后自动清理攻击痕迹。由于工具链利用的漏洞存在于 iOS 13 至 18.7 的绝大多数版本中，截止目前，已有上亿用户受到影响。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/weekly/issue-130/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>CDE：一次让 Core Data 更像现代 Swift 的尝试</title><link>https://fatbobman.com/zh/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/</guid><description>在上一篇文章中，我聊了聊 Core Data 在当下项目中的一些现实处境。在本文中，我将介绍我的一个实验性项目 Core Data Evolution，探索能不能让 Core Data 在现代 Swift 项目中以一种更自然的方式继续存在下去？</description><pubDate>Wed, 18 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在上一篇文章中，我聊了聊 Core Data 在当下项目中的一些现实处境。在本文中，我将介绍我的一个实验性项目 Core Data Evolution，探索能不能让 Core Data 在现代 Swift 项目中以一种更自然的方式继续存在下去？&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><category>concurrency</category><author>Fatbobman</author></item><item><title>2026 年，为什么我仍在思考 Core Data</title><link>https://fatbobman.com/zh/posts/why-i-am-still-thinking-about-core-data-in-2026/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/why-i-am-still-thinking-about-core-data-in-2026/</guid><description>Core Data 在 2026 年仍有大量存量项目，但它与现代 Swift 的并发模型、类型安全和代码表达之间的错位越来越明显。本文梳理三个核心问题，并思考在不放弃 Core Data 的前提下实现现代化改造的可能。</description><pubDate>Wed, 11 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Core Data 在 2026 年仍有大量存量项目，但它与现代 Swift 的并发模型、类型安全和代码表达之间的错位越来越明显。本文梳理三个核心问题，并思考在不放弃 Core Data 的前提下实现现代化改造的可能。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/why-i-am-still-thinking-about-core-data-in-2026/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><author>Fatbobman</author></item><item><title>跨域传递 NSManagedObjectContext 为什么在 Swift 6.2 中不再报错？真正的变化不在编译器</title><link>https://fatbobman.com/zh/posts/sendable-nsmanagedobjectcontext/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/sendable-nsmanagedobjectcontext/</guid><description>当同一段与并发有关的代码在 Xcode 16 中无法通过，却能在 Xcode 26 中顺利编译时，你第一时间会想到什么？我最初的判断是编译器进化了，但现实并没有这么简单。本文将记录我最近遇到的一次有意思的排查过程：从测试失败出发，一步步追到 Core Data 的 SDK interface，最终发现，问题的关键并不完全在 Swift 编译器本身，而在 NSManagedObjectContext 被导入 Swift 的方式已经发生了变化。</description><pubDate>Wed, 04 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;当同一段与并发有关的代码在 Xcode 16 中无法通过，却能在 Xcode 26 中顺利编译时，你第一时间会想到什么？我最初的判断是编译器进化了，但现实并没有这么简单。本文将记录我最近遇到的一次有意思的排查过程：从测试失败出发，一步步追到 Core Data 的 SDK interface，最终发现，问题的关键并不完全在 Swift 编译器本身，而在 NSManagedObjectContext 被导入 Swift 的方式已经发生了变化。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/sendable-nsmanagedobjectcontext/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>concurrency</category><category>core data</category><author>Fatbobman</author></item><item><title>Xcode 26.3 + Claude Agent：模型替换、MCP、Skill 与自适应配置</title><link>https://fatbobman.com/zh/posts/xcode-263-claude/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/xcode-263-claude/</guid><description>出乎意料，Xcode 26.3 版本中苹果直接提供了对 Claude Code/Codex 的支持。自此，开发者终于可以在 Xcode 中优雅地使用原生 AI Agent 了。 这两天我针对新版本进行了一系列尝试，包括配置 MCP、以及编写自适应的 `CLAUDE.md`。本文将以 Claude Code 为例，分享一些文档之外的技巧。</description><pubDate>Fri, 06 Feb 2026 02:30:00 GMT</pubDate><content:encoded>&lt;p&gt;出乎意料，Xcode 26.3 版本中苹果直接提供了对 Claude Code/Codex 的支持。自此，开发者终于可以在 Xcode 中优雅地使用原生 AI Agent 了。 这两天我针对新版本进行了一系列尝试，包括配置 MCP、以及编写自适应的 `CLAUDE.md`。本文将以 Claude Code 为例，分享一些文档之外的技巧。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/xcode-263-claude/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>ai</category><category>dev tools</category><author>Fatbobman</author></item><item><title>macOS 录屏软件开发实录：从像素抓取到元数据重现</title><link>https://fatbobman.com/zh/posts/screensage-from-pixel-to-meta/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/screensage-from-pixel-to-meta/</guid><description>视频正在取代文字成为主流的表达方式，而好工具是创作的加速器。macOS 录屏软件 ScreenSage Pro 的独立开发者 Sintone 分享了从像素抓取到元数据重现的全过程。从屏幕录制、元数据捕获，到高性能视频合成，他详述了开发中的挑战与解决方案。</description><pubDate>Wed, 04 Feb 2026 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;视频正在取代文字成为主流的表达方式，而好工具是创作的加速器。macOS 录屏软件 ScreenSage Pro 的独立开发者 Sintone 分享了从像素抓取到元数据重现的全过程。从屏幕录制、元数据捕获，到高性能视频合成，他详述了开发中的挑战与解决方案。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/screensage-from-pixel-to-meta/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>isolated(any) 与 #isolation：让 Swift 闭包自动继承隔离域</title><link>https://fatbobman.com/zh/posts/letting-swift-closures-automatically-inherit-isolation/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/letting-swift-closures-automatically-inherit-isolation/</guid><description>Swift 6 为并发引入了许多新功能与关键字。虽然其中不少内容在日常开发中可能鲜少用到，但一旦遭遇特定场景，若对这些新概念缺乏了解，即便有 AI 辅助也可能陷入僵局。本文将通过一个在开发测试中遇到的实际并发问题，来介绍如何利用 **`@isolated(any)`** 以及 **`#isolation`** 宏，实现函数的隔离域继承，从而让编译器自动推断闭包的运行环境。</description><pubDate>Wed, 21 Jan 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Swift 6 为并发引入了许多新功能与关键字。虽然其中不少内容在日常开发中可能鲜少用到，但一旦遭遇特定场景，若对这些新概念缺乏了解，即便有 AI 辅助也可能陷入僵局。本文将通过一个在开发测试中遇到的实际并发问题，来介绍如何利用 **`@isolated(any)`** 以及 **`#isolation`** 宏，实现函数的隔离域继承，从而让编译器自动推断闭包的运行环境。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/letting-swift-closures-automatically-inherit-isolation/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>concurrency</category><author>Fatbobman</author></item><item><title>在 tvOS 上活下來：一個非典型播放器的工程實錄</title><link>https://fatbobman.com/zh/posts/surviving-tvos/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/surviving-tvos/</guid><description>tvOS 绝非 iPad 的放大版。本文是 Syncnext 播放器的工程实录，深入解析 Apple TV 开发的真实陷阱：从 Focus 焦点机制、严苛的存储限制，到 SwiftUI 填坑与 AVPlayer 深度调优，助开发者在 tvOS 平台上“活下来”</description><pubDate>Wed, 14 Jan 2026 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;tvOS 绝非 iPad 的放大版。本文是 Syncnext 播放器的工程实录，深入解析 Apple TV 开发的真实陷阱：从 Focus 焦点机制、严苛的存储限制，到 SwiftUI 填坑与 AVPlayer 深度调优，助开发者在 tvOS 平台上“活下来”&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/surviving-tvos/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><category>tvos</category><category>guest post</category><author>Fatbobman</author></item><item><title>告别“可移植汇编”：我已让 Swift 在 MCU 上运行七年</title><link>https://fatbobman.com/zh/posts/running-swift-on-mcu/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/running-swift-on-mcu/</guid><description>在苹果官方正式开启嵌入式支持之前，Andy Liu 和他的 MadMachine 团队就已经在这个领域深耕多年。他们认为，在功能日益复杂的开发场景中，Swift 的现代语言特性将展现出巨大的优势。在数年前便选择了一套与社区主流不同的理念与技术路线。 我邀请 Andy 分享他们过去几年在 Swift 嵌入式开发中的实战经历分享出来。这既是一份宝贵的历史记录，也希望能为社区提供一个不一样的思考维度。</description><pubDate>Wed, 07 Jan 2026 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;在苹果官方正式开启嵌入式支持之前，Andy Liu 和他的 MadMachine 团队就已经在这个领域深耕多年。他们认为，在功能日益复杂的开发场景中，Swift 的现代语言特性将展现出巨大的优势。在数年前便选择了一套与社区主流不同的理念与技术路线。 我邀请 Andy 分享他们过去几年在 Swift 嵌入式开发中的实战经历分享出来。这既是一份宝贵的历史记录，也希望能为社区提供一个不一样的思考维度。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/running-swift-on-mcu/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>独立开发者的试炼：Zipic 从 0 到 1 的产品化之路</title><link>https://fatbobman.com/zh/posts/zipic-1-from-0-to-1/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/zipic-1-from-0-to-1/</guid><description>做独立产品这件事，说起来容易，真动手了才知道水有多深。这是一个独立开发者将职场小需求变成主力产品的真实故事。我们将跟随 Zipic 作者十里的视角，一起回顾产品从 0 到 1 的全过程。本篇聚焦产品设计与决策思考。</description><pubDate>Mon, 22 Dec 2025 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;做独立产品这件事，说起来容易，真动手了才知道水有多深。这是一个独立开发者将职场小需求变成主力产品的真实故事。我们将跟随 Zipic 作者十里的视角，一起回顾产品从 0 到 1 的全过程。本篇聚焦产品设计与决策思考。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/zipic-1-from-0-to-1/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>逃离 Mac App Store：如何从零构建独立应用的分发与售卖体系</title><link>https://fatbobman.com/zh/posts/zipic-2-selling-and-distribution/</link><guid isPermaLink="true">https://fatbobman.com/zh/posts/zipic-2-selling-and-distribution/</guid><description>Mac App Store 固然使用简单，但可能并不适合所有的产品。本文中，我们将跟随 Zipic 作者十里的视角，来解决一款 macOS 独立应用的分发与售卖问题。</description><pubDate>Mon, 22 Dec 2025 14:11:00 GMT</pubDate><content:encoded>&lt;p&gt;Mac App Store 固然使用简单，但可能并不适合所有的产品。本文中，我们将跟随 Zipic 作者十里的视角，来解决一款 macOS 独立应用的分发与售卖问题。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/zh/posts/zipic-2-selling-and-distribution/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>【小贴士】为什么父视图无法修改子视图的 @State</title><link>https://fatbobman.com/zh/snippet/why-child-state-won-not-update-from-parent-in-swiftui/</link><guid isPermaLink="true">https://fatbobman.com/zh/snippet/why-child-state-won-not-update-from-parent-in-swiftui/</guid><description>在 init 中给 @State 赋值后，为什么父视图更新数据时子视图无反应？本文解析 SwiftUI 状态管理的生命周期机制与正确的数据传递方式。</description><pubDate>Thu, 18 Dec 2025 08:21:01 GMT</pubDate><content:encoded>&lt;p&gt;在 init 中给 @State 赋值后，为什么父视图更新数据时子视图无反应？本文解析 SwiftUI 状态管理的生命周期机制与正确的数据传递方式。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/zh/snippet/why-child-state-won-not-update-from-parent-in-swiftui/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><author>Fatbobman</author></item><item><title>【小贴士】Partytown 实战：修复 GTM 自定义事件与 dataLayer 失效问题</title><link>https://fatbobman.com/zh/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/</link><guid isPermaLink="true">https://fatbobman.com/zh/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/</guid><description>使用 Partytown 优化性能后，GA4 和 GTM 事件无法上报？详解如何在 Astro 中配置 forward 属性，让主线程的 gtag 和 dataLayer.push 正常通讯。</description><pubDate>Mon, 08 Dec 2025 14:20:00 GMT</pubDate><content:encoded>&lt;p&gt;使用 Partytown 优化性能后，GA4 和 GTM 事件无法上报？详解如何在 Astro 中配置 forward 属性，让主线程的 gtag 和 dataLayer.push 正常通讯。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/zh/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>web</category><category>performance</category><category>astro</category><author>Fatbobman</author></item><item><title>【小贴士】Swift 6 编译加速：启用 Swift-Syntax 预构建 (Prebuilts)</title><link>https://fatbobman.com/zh/snippet/speed-up-compilation-with-prebuilt-swift-syntax/</link><guid isPermaLink="true">https://fatbobman.com/zh/snippet/speed-up-compilation-with-prebuilt-swift-syntax/</guid><description>Swift 宏编译太慢？在 Swift 6.1+ 中启用 Swift-Syntax 预构建 (Prebuilts)，一行命令显著减少 Xcode 构建时间，提升开发效率。</description><pubDate>Fri, 06 Jun 2025 00:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Swift 宏编译太慢？在 Swift 6.1+ 中启用 Swift-Syntax 预构建 (Prebuilts)，一行命令显著减少 Xcode 构建时间，提升开发效率。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/zh/snippet/speed-up-compilation-with-prebuilt-swift-syntax/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><author>Fatbobman</author></item><item><title>【小贴士】Swift 模块化：使用 package 关键字实现 Target 间安全共享</title><link>https://fatbobman.com/zh/snippet/controlling-access-within-a-swift-package/</link><guid isPermaLink="true">https://fatbobman.com/zh/snippet/controlling-access-within-a-swift-package/</guid><description>如何在 Swift Package 的多个 Target 间共享代码却不暴露给外部？详解 package 访问修饰符，填补 internal 与 public 间的权限空白，提升模块封装性。</description><pubDate>Thu, 08 May 2025 14:21:01 GMT</pubDate><content:encoded>&lt;p&gt;如何在 Swift Package 的多个 Target 间共享代码却不暴露给外部？详解 package 访问修饰符，填补 internal 与 public 间的权限空白，提升模块封装性。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/zh/snippet/controlling-access-within-a-swift-package/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><author>Fatbobman</author></item><item><title>【小贴士】Monorepo 实战：解决 VSCode/Cursor 中 SwiftLint 配置失效问题</title><link>https://fatbobman.com/zh/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/</link><guid isPermaLink="true">https://fatbobman.com/zh/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/</guid><description>在 VSCode 或 Cursor 中开发 Swift Monorepo 项目时，SwiftLint 无法读取根目录配置？通过设置 configSearchPaths 和明确包含路径，轻松实现多包共享 Lint 规则。</description><pubDate>Thu, 24 Apr 2025 14:20:00 GMT</pubDate><content:encoded>&lt;p&gt;在 VSCode 或 Cursor 中开发 Swift Monorepo 项目时，SwiftLint 无法读取根目录配置？通过设置 configSearchPaths 和明确包含路径，轻松实现多包共享 Lint 规则。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/zh/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev tools</category><author>Fatbobman</author></item><item><title>【小贴士】VSCode/Cursor 测试 Core Data：手动编译 xcdatamodeld 指南</title><link>https://fatbobman.com/zh/snippet/how-to-test-core-data-code-in-vscode-cursor/</link><guid isPermaLink="true">https://fatbobman.com/zh/snippet/how-to-test-core-data-code-in-vscode-cursor/</guid><description>在 VSCode/Cursor 中运行 Core Data 单元测试报错？这是因为 xcdatamodeld 未被自动编译。学习配置 Xcode 工具链并使用 xcrun momc 手动生成 momd 文件，快速修复测试环境。</description><pubDate>Tue, 15 Apr 2025 14:21:01 GMT</pubDate><content:encoded>&lt;p&gt;在 VSCode/Cursor 中运行 Core Data 单元测试报错？这是因为 xcdatamodeld 未被自动编译。学习配置 Xcode 工具链并使用 xcrun momc 手动生成 momd 文件，快速修复测试环境。&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/rss.xml&quot;&gt;&lt;b&gt;Subscribe English RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/zh/snippet/how-to-test-core-data-code-in-vscode-cursor/&quot;&gt;&lt;b&gt;阅读全文&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><author>Fatbobman</author></item></channel></rss>