Fatbobman's Swift Weekly #145
When Inspiration Outruns the ResultsOver the past few months, I’ve been refining my own AI-assisted workflow. Real progress has been made, but for long-running tasks, I’ve consistently lacked any quantifiable benchmark data. Thanks to competition among AI model providers, OpenAI recently lifted its 5-hour usage cap — which finally let me test my ideas without interruption, and compare the results and performance of different approaches head to head. Last week I burned through 6 or 7 accumulated limit resets across my two Pro accounts, and genuinely got a taste of “token freedom.” Since each test run typically takes at least several dozen minutes, I found myself flooded with ideas while waiting and observing — new optimizations and tweaks kept popping into my head. This produced a strange phenomenon: while the old version was still running its test, the new version’s code was already written. My iteration speed had completely outpaced my test results. Some of those changes did turn out to work well, but once I calmed down, I had to face an uncomfortable truth — many of my “brilliant ideas” were really just assumptions I hadn’t thought through carefully. At the time, caught in the false “flow state” that vibe coding produces, I didn’t notice this at all. It wasn’t until the test results showed a clear regression that I slammed on the brakes and actually stopped to reflect. AI genuinely shortens the time it takes to validate an idea — but that convenience makes it easy to fall into a blind spot, skipping the deep thinking and logical groundwork that should happen before you start coding. Cheap, exhaustive testing shouldn’t become a substitute for real thought. Looking back, the intuition and experience we’ve built up are often far more efficient than AI’s blind trial-and-error at ruling out or refining ideas that were never going to work. AI is an extraordinarily powerful tool — but where it should really earn its keep is in assisting execution, not replacing thinking. Previous Issue|Newsletter Archive 📢 Sponsor Fatbobman’s Swift WeeklyPromote your product to Swift & iOS developers across: - Blog: 50,000+ monthly visitors Perfect for developer tools, courses, and services. Enjoyed this issue? Buy me a coffee ☕️ Recent RecommendationsGeometry, Compositing and Drawing Groups in SwiftUISwiftUI has three similarly-named modifiers with very different jobs — Natalia Panferova breaks them down through three concrete scenarios: One TaskGroup, Two Live Streams: a Swift 6 LLM BenchmarkBy pulling all mutable run-state into a single Token counts, time-to-first-token latency, sample records, and all other run-time state live only inside the actor. Inside Syncing SwiftData with a Custom Backend Using HistoryObserverYears ago, Apple gave SwiftData a history mechanism similar to Core Data’s Persistent History Tracking, letting developers track data-change events made to the same database from different sources in real time. But without a simple entry point that fit SwiftData’s design philosophy, the feature never saw much adoption. At WWDC 2026, Apple introduced The article walks through a simple room-measurement app: using Public Asset Symbol Constants in Swift PackagesXcode auto-generates typed asset constants from Ralf Ebert puts any assets meant for cross-package sharing into a Previews and MCPXcode 27 exposes 47 tools through its MCP interface, and Amy Delves‘s solution is to introduce a separate, unsandboxed XPC service dedicated to talking to Xcode’s MCP, while the main app stays sandboxed; the two communicate over XPC. The rendered result is read by the helper service and shipped back inline, sidestepping the fact that the main sandboxed app can’t reach file paths outside the sandbox. I Found a Workaround for an App Store Connect BugPlenty of developers have run into this App Store Connect bug: pages keep redirecting back to What’s an Icon in 2026?At WWDC 2025, Apple recommended using Icon Composer to build icons, with the rationale that icons should move from static images toward “more expressive,” multi-layered artworks. As a result, an icon no longer has one fixed appearance — it only takes on a particular form once “observed” on a specific device under specific settings. Take Apple’s Phone app icon as an example: the classic green background with a white handset now splits into several separate versions across dark mode, glass mode, and various tint colors. Jim Nielsen argues that an icon’s value has always rested on being simple, consistent, and memorable. The further you push toward “expressiveness” by stacking on variants, the more you dilute the icon’s core job — instant recognition. ToolImmersiveMap: Building a Native Immersive Map with SwiftUI and MetalImmersiveMap is a native map rendering engine for Apple platforms built by Artem Bobkin, implemented in Swift and Metal, and exposed through The project’s standout capability is a continuous transition between a spherical globe and a flat map. Beyond that, it covers vector tile (Vector Tile Source) parsing, label layout, 3D buildings, starfield and day/night effects, map styling, camera fly-to animations, and live markers that support clustering and dynamic movement. Developers can run it out of the box with the built-in tiles, or plug in Mapbox or a custom MVT (Mapbox Vector Tile) data source. ImmersiveMap is a thorough demonstration of how to wrap a complex Metal rendering system behind a clean SwiftUI API. For developers who want to understand how a map engine, SwiftUI, and low-level graphics rendering work together, it’s a genuinely worthwhile open-source project to study. Thanks for reading Fatbobman’s Swift Weekly! This post is public so feel free to share it. 当灵感跑在了结果前面过去几个月,我一直在优化自己的 AI 工作流。尽管颇有进展,但在长任务中,始终缺乏一些可以量化的 benchmark 数据。得益于 AI 模型公司之间的竞争,不久前 OpenAI 解除了 5 小时的额度限制,这让我终于能够不间断地测试自己的一些想法,并比较不同方案在效果与性能上的差异。上周,我把两个 Pro 账户攒下的 6、7 次额度都用掉了,着实体验了一把“Token 自由”的感觉。 由于每一个测试通常都需要跑上至少几十分钟,在等待、观测的过程中,我经常会灵感涌动,脑子里不断冒出各种优化和调整方案。这就产生了一个奇怪的现象:旧版本的测试还在运行时,新版本的代码已经写完了。迭代速度彻底跑在了测试结果前面。尽管其中确实有一些改动颇见成效,但冷静后也不得不面对一个残酷的事实——许多自以为是的“灵感”其实只是想当然,并没有经过审慎的思考。 然而,在那种由“Vibe Coding”产生的虚假“心流”状态下,当时的我并没有意识到这一点。直到测试结果出现明显的劣化,我才猛地踩下刹车,开始认真反思。 AI 的确极大地缩短了我们验证一个 Idea 的时间,但这种便利也容易让人陷入盲区,忽略了在动手前对构想进行深入思考与逻辑梳理的过程。不能让低成本的“穷举测试”取代真正的思考。回过头来看,我们积累的直觉与经验,在否决或调整那些不切实际的构想时,效率往往远高于 AI 的盲目试错。 AI 是一个极其强大的工具,但它最该发挥作用的地方是辅助执行,而非代替思考。 如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 Buy Me a Coffee 支持我的创作。 近期推荐厘清 SwiftUI 中的三大视图组修饰符 (Geometry, compositing and drawing groups in SwiftUI)SwiftUI 中三个名字相近却职责迥异的修饰符—— Natalia Panferova 用三个具体场景逐一拆解: 用 Swift 6 并发机制合并 LLM 与遥测双数据流 (One TaskGroup, Two Live Streams: a Swift 6 LLM Benchmark)Wesley Matlock 通过将所有可变运行状态收进一个 token 计数、首 token 延迟、采样记录等所有运行时状态只存在于 actor 内部。在 利用 HistoryObserver 构建 SwiftData 自定义同步 (Syncing SwiftData with a Custom Backend Using HistoryObserver)几年前,苹果便给 SwiftData 提供了 SwiftData History 机制,该机制与 Core Data 的 Persistent History Tracking 类似,让开发者实时掌握来自不同源对同一个数据库造成的数据变更事件,但由于缺少一个与 SwiftData 设计理念贴近的简单入口,该功能的利用率并不高。在 WWDC 2026 上,苹果为 SwiftData 引入 文章围绕一个房间测量小应用展开:用 在 Swift 模块包中共享公开的资源符号常量 (Public asset symbol constants in Swift packages)Xcode 会从 Ralf Ebert 把要跨包共享的资源放进 突破 Xcode 预览与 MCP 的沙盒限制 (Previews and MCP)Xcode 27 提供的 MCP 接口一共暴露了 47 个工具,其中 Amy Delves 的解法是引入一个独立的、未沙盒化的 XPC 服务专门与 Xcode MCP 对话,主 App 本身仍保持沙盒化,两者通过 XPC 通信;渲染结果由 helper 服务读取后内联传回,从而绕开主 App 无法访问沙盒外文件路径的限制。 我找到了解决 App Store Connect 登录 Bug 的 workaround (I found a workaround for an App Store Connect bug)不少开发者都遇到过 App Store Connect 的一个 Bug:在已登录状态下页面仍会跳转回 如何定义 2026 年的 App 图标? (What’s an Icon in 2026?)Apple 在 WWDC 2025 上推荐用 Icon Composer 制作图标,理由是让图标从静态图像走向“更具表现力”的多层作品——图标由此不再有唯一确定的样子,只有在具体设备、具体设置下被“观测”时才会呈现出某一种形态。以 Apple 电话 App 图标为例:绿底白话筒的经典形象,如今要分裂成深色模式、玻璃模式、多种着色的好几个版本。 Jim Nielsen 认为图标的价值本就建立在“简单、一致、易记”之上,越往“富有表现力”的方向堆叠变体,越是在稀释图标本该承担的即时辨识功能。 工具ImmersiveMap:用 SwiftUI 与 Metal 构建原生沉浸式地图ImmersiveMap 是 Artem Bobkin 开发的一款面向 Apple 平台的原生地图渲染引擎,用 Swift 与 Metal 实现,并通过 项目最耀眼的能力,是球形地球与平面地图之间的连续过渡。此外,它还涵盖矢量瓦片(Vector Tile Source)解析、标签布局、3D 建筑、星空与昼夜效果、地图样式、相机飞行动画,以及支持聚合与动态移动的实时标记。开发者既可以直接使用内置瓦片运行,也可以接入 Mapbox 或自定义的 MVT(Mapbox Vector Tile)数据源。 ImmersiveMap 完整展示了如何把复杂的 Metal 渲染系统封装在简洁的 SwiftUI API 之下。对于想理解地图引擎、SwiftUI 与底层图形渲染如何协同工作的开发者来说,这是一份颇具参考价值的开源项目。 Welcome to my blog Fatbobman's Swift Blog( 肘子的Swift记事本 )
|
