首页

114
挖掘“沉默的专家”
2025 年 12 月 8 日 Issue #114

挖掘“沉默的专家”

关注我博客的读者可能留意到,最近一段时间我较少发表个人的作品,取而代之的是,我陆续发布了多篇来自不同开发者的客座文章。没错,这是我近期发起的...
探索本期内容

Recent Weekly Issues

Guest Post by Haozes

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

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

Guest Post by LiYanan

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

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

Guest Post by Shudao Wang

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

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

Guest Post by LingJueYa

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

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

Guest Post by Shuhari

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 创造“玻璃文字”效果。

by Fatbobman

用 MainActor.assumeIsolated 解决旧 API 与 Swift 6 适配问题

尽管 Swift 提供严格并发检查已有一段时间,但许多苹果官方 API 仍未对此进行充分适配,这种情况可能还会持续相当长的时间。随着 Swift 6 的逐步普及,这个问题变得愈发突出:开发者一方面希望享受 Swift 编译器带来的并发安全保障,另一方面又对如何让代码满足编译要求感到困惑。本文将通过一个 NSTextAttachmentViewProvider 的实现案例,介绍 MainActor.assumeIsolated 在特定场景下的妙用。

by Fatbobman

Swift 6: Sendable、@unchecked Sendable、@Sendable、sending and nonsending

Swift 的并发模型引入了众多关键字,其中一些在命名和用途上颇为相似,容易让开发者感到困惑。本文将对 Swift 并发中与跨隔离域传递相关的几个关键字:Sendable、@unchecked Sendable、@Sendable、sending 和 nonsending 进行梳理,帮助大家理解它们各自的作用和使用场景。

by Fatbobman

Default Actor Isolation:好初衷带来的新问题

尽管 Swift 严格并发检查的初衷是好的,但对于很多单线程场景来说,却明显增加了开发者的负担。开发者不得不在代码中添加一些并不必要的 Sendable、@MainActor 等声明,只为了满足编译器的要求。Swift 6.2 新增的 Default Actor Isolation 功能将极大地改善这种状况,减少不必要的样板代码。本文将对 Default Actor Isolation 功能进行介绍,并指出在使用该功能后需要注意的一些情况。