Blender is Developing an iPad Version
A few days ago, the Blender Foundation announced that it is developing a native version for iPad Pro with specialized optimizations for Apple Pencil. The initial version will focus on basic object manipulation and sculpting features, with later versions adding Grease Pencil and storyboarding capabilities. It's particularly worth noting that this is not a feature-limited iPadOS version like some professional software, but a fully-featured Blender iPadOS native application.
The project is currently still in the early development stage. Developers who want to get an early taste can compile the current code in Xcode and experience it ahead of time. Megabits has also shared a detailed installation tutorial video on YouTube.
Whether it's the Blender iPad version currently in development or Xogot (the iPad version of Godot game editor) that launched on the App Store a few months ago, these powerful professional applications with complex desktop UIs are making their way to iPad. This indicates that iPad's hardware performance can now fully meet the operational requirements of these applications. Development teams clearly believe that investing effort in this challenging porting work will yield worthwhile returns.
A few years ago, Apple hoped that iPad could enter more professional fields, but limited by the scarcity of professional software, the vision of "Your next computer is not a computer" didn't progress as smoothly as expected. This year, iPadOS 26 has significantly improved multi-window capabilities, providing a look and feel similar to macOS at the system level. This might encourage more professional application development teams to be interested in providing native versions for iPad.
Previously, except in certain professional fields, iPad was more often used by professional users to address edge-case scenarios when using a MacBook was inconvenient. As iPad's hardware and software capabilities continue to improve and its ecosystem becomes increasingly complete, it may no longer serve merely as a supplement to desktop devices, but instead carve out its own unique ecological path in professional fields.
Previous Issue|Newsletter Archive
If you appreciate my work and want to promote your product to the Swift and iOS developer community, sponsoring my blog & newsletter could be an excellent opportunity for you.
Original
Core Data Migration Incident Analysis: The Hidden Traps We Overlooked
Compared to some open-source frameworks, Core Data and SwiftData, despite having Apple’s official endorsement, often leave developers helpless when exceptions occur due to their “black box” nature, making it difficult to quickly locate problems and find effective solutions. This article documents an app startup timeout incident caused by Core Data model migration, shares the solution, and deeply analyzes the underlying causes.
Recent Recommendations
Uncertain⟨T⟩
In programming, we tend to value certainty—especially in strongly typed languages like Swift. But in the real world, uncertainty is everywhere: GPS drift, network latency, sensor noise… these fuzzy yet trustworthy signals are hard to represent using traditional boolean logic or type systems. In this article, Mattt introduces the Uncertain type, a way to model and reason about uncertainty in a type-safe manner—bringing Swift one step closer to the complexity of the real world.
How to Create and Combine SwiftUI Views Without Getting Lost in Deep Nesting and Complex Layouts
As SwiftUI projects grow, UI components tend to become increasingly complex and deeply nested—leading to so-called “fat views.” So how can we structure our views to make them more elegant, safe, maintainable, and efficient? In this article, Matteo Manferdini walks through real-world examples to show how to build highly configurable and readable UI components using SwiftUI’s built-in layout containers, style modifiers, and ViewBuilder
parameters.
A Peek into My Debugging Process (With Real Examples)
Debugging isn’t just about fixing bugs—it’s essential to understanding code, system behavior, and building robust apps. In this post, Pol Piella shares how he resolved three real-world production issues, including a SwiftUI crash, a performance regression, and a misfiring permission alert. Pol emphasizes that “the key to debugging is location,” and only by using the right tools and a systematic process can you truly solve problems efficiently and save time.
SwiftUI + Core Animation: Demystify All Sorts of Groups
drawingGroup()
, compositingGroup()
, and geometryGroup()
are commonly used—yet easily confused—modifiers in SwiftUI. Despite their similar names, they behave very differently under the hood. In this article, Weichao Deng breaks down their implementation details and usage caveats through the lens of Core Animation, aided by Xcode’s view debugging tools.
Understanding how things work isn’t just about “using them better”—it’s about knowing where to look when things go wrong.
All the Ways SwiftData's ModelContainer Can Error on Creation
Compared to Core Data, SwiftData provides much less context when database loading fails. Scott Driggers replaced fatalError
with a custom loggedFatalError
and implemented a logging mechanism to gain more insight into crashes. In this article, he walks through several real-world failure scenarios, analyzing common root causes and sharing practical fixes—such as model version mismatches, low disk space, and concurrent migration conflicts.
Migrating to Swift Actors
Since their introduction in Swift 5.5, actors have become an essential building block of Swift’s concurrency model. Yet many developers still struggle to grasp their role and value. In this article, Saafo first contrasts actors with traditional locking and dispatch queue strategies, then shares how to gradually refactor existing classes into actors and bridge the async/sync divide—all based on real-world migration experience.
Mastering Swift 6.2 Concurrency: A Complete Tutorial
Swift 6.2 introduces significant concurrency improvements, including several tools designed to help developers migrate and debug more effectively. In this comprehensive guide, Mathis Gaignet outlines key additions such as default main thread isolation, the semantics of nonisolated(nonsending)
and @concurrent
, the strict concurrency and Sendable inference system, and SwiftUI-specific pitfalls. He also explains how to detect main-thread blocking using Instruments.
Tools
TrackWeight – Weigh Objects Using Your Trackpad
An imaginative macOS app that turns your MacBook trackpad into a digital scale! Built by Krish Shah, this open-source project gained thousands of stars within days of launch.
macOS trackpads only register pressure events when capacitive contact is detected—meaning your finger (or another conductive object) must remain in contact during the measurement.
Xcode Project Renamer
Renaming an Xcode project is notoriously painful and error-prone. With Marko Tadić’s Xcode Project Renamer, it becomes a one-line task:
./rename.swift "$OLD_PROJECT_NAME" "$NEW_PROJECT_NAME"
The script traverses the project directory and updates all filenames and contents accordingly.
Stewart Lynch also demonstrates the process in this video, including how to install an optimized CLI version (xp-renamer
) via Homebrew:
brew install stewartlynch/formulae/xp-renamer
⚠️ The only thing not renamed automatically is the project’s root folder—you’ll need to handle that manually.
iOS Backend Selection Cheat Sheet
Do you need a cloud backend? Should you self-host? Go with CloudKit, Firebase, or something else? Leo G Dion created this comprehensive cheat sheet to guide backend decision-making for iOS apps. It visually maps out use cases, technical requirements, and cost considerations—ideal for early-stage planning. The chart also highlights which solutions support running Swift on the server.
Want to learn the reasoning behind this chart? Check out the companion article: Choosing the Best Backend for your iOS App.
Blender 正在开发 iPad 版本
几天前,Blender 基金会宣布正在开发用于 iPad Pro 运行的原生版本,并针对 Apple Pencil 进行了专门优化。初版将专注于基础对象操作和雕刻功能,后续版本会加入 Grease Pencil 和故事板功能。特别值得注意的是,这并非某些专业软件那样的 iPadOS 功能阉割版,而是一个具备完整功能的 Blender iPadOS 原生应用。
项目目前仍处于早期开发阶段,想要尝鲜的开发者可以在 Xcode 中自行编译当前代码并提前体验。Megabits 也在 YouTube 上分享了详细的安装教程视频。
无论是正在开发中的 Blender iPad 版本,还是几个月前已登陆 App Store 的 Xogot(Godot 游戏编辑器 iPad 版),这些功能强大且在桌面端都拥有复杂 UI 的专业应用纷纷登陆 iPad,说明 iPad 现在的硬件性能已经完全能够满足这些应用的运行需求。开发团队显然认为,为这项艰巨的移植工作付出努力将会得到应有的回报。
几年前,苹果就希望 iPad 能够进入更多专业领域,但受限于专业软件的匮乏,"你的下一台电脑,何必是电脑"的愿景推广并不算顺利。今年 iPadOS 26 大幅改善了多窗口能力,在系统层面提供了与 macOS 相似的观感和体验,这或许能促使更多专业应用开发团队有兴趣为 iPad 提供原生版本。
此前,除了个别专业领域外,iPad 更多时候被专业用户用来解决使用 MacBook 不便时的一些边缘场景需求。随着 iPad 软硬件能力的不断提升和生态系统的日趋完善,它或许将不再仅仅是桌面设备的补充,而会在专业领域走出属于自己的独特生态之路。
如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 爱发电,Buy Me a Coffee 支持我的创作。
原创
Core Data 迁移事故复盘:那些被忽视的隐藏陷阱
相比一些开源框架,Core Data 和 SwiftData 虽然有苹果的官方背书,但它们的“黑盒”特性在出现异常时常令开发者束手无策,难以及时定位问题并找到有效解决方案。本文记录了一次因 Core Data 数据模型迁移导致的应用启动超时事件,分享解决方案,并深入剖析背后的成因。
本期推荐
不确定类型 (Uncertain⟨T⟩)
在编程中我们习惯了追求确定性,尤其是在 Swift 这类强类型语言里。但现实世界往往充满不确定性,例如 GPS 偏移、网络延迟或传感器噪声等。这些模糊但又可信的数据,传统的布尔逻辑难以准确表达。在本文中,Mattt 介绍了他构建的 Uncertain 类型,支持开发者以类型安全的方式建模与推理不确定性信息,为 Swift 带来了更贴近现实的表达能力。
SwiftUI 视图组合技巧 (How to Create and Combine SwiftUI Views Without Getting Lost in Deep Nesting and Complex Layouts)
随着 SwiftUI 项目的不断扩展,UI 组件日益复杂,嵌套层级也随之加深,许多视图逐渐演变成“胖视图”。那么该如何解构这些视图,让它们更优雅、安全、易维护且高效?在本文中,Matteo Manferdini 通过实际示例,逐步演示了如何借助 SwiftUI 提供的内建布局组件、View 样式机制与 ViewBuilder 参数,构建可读性强且高度可配置的 UI 组件。
调试思路分享 (A Peek into My Debugging Process)
调试不仅是“修 bug”,更是理解代码、掌握系统行为、构建稳健应用的核心能力。在这篇文章中,Pol Piella 分享了他处理三个真实线上问题的全过程,涵盖 SwiftUI 崩溃、性能回退,以及系统权限弹窗误触发的完整排查链路。Pol 强调:“调试的关键是定位”,只有掌握合适的工具,建立系统性的排查流程,才能真正高效地解决问题、节省时间。
SwiftUI 与 Core Animation 中的 Group 全解析 (SwiftUI + Core Animation: Demystify All Sorts of Groups)
drawingGroup()
、compositingGroup()
、geometryGroup()
是 SwiftUI 中常见但易混淆的修饰器,尽管名字相近,其底层行为却大不相同。本文中,Weichao Deng 从 Core Animation 的视角出发,结合 Xcode 的视图调试工具,逐一剖析这些修饰器的实现机制与使用注意事项,帮助你更准确地理解它们在渲染管线中的作用。
掌握底层原理,不只是为了“用得更好”,更是为了解决问题时能够有的放矢。
SwiftData 启动失败的常见原因与排查方法 (All the Ways SwiftData's ModelContainer Can Error on Creation)
相较于 Core Data,SwiftData 在加载数据库失败时提供的信息更为有限。Scott Driggers 通过自定义 loggedFatalError
替代 fatalError
,并配合日志收集与上传机制,成功获取了更详细的错误上下文。在这篇文章中,他总结了多个真实的崩溃案例,深入分析了 SwiftData 初始化失败的几种常见原因,并逐一提供了解决方案:包括模型版本不匹配、磁盘空间不足、多进程并发迁移等问题。
迁移至 Swift Actors
自 Swift 5.5 引入以来,actor 已逐渐成为 Swift 并发模型的重要组成部分。但不少开发者仍对其用途和特性理解不深。Saafo 在本文中首先回顾了 actor 相较于传统锁、队列方案的优势,随后结合实际项目经验,详解如何将现有类重构为 actor,以及如何在异步与同步世界之间桥接,使其能够逐步集成进当前代码库。
Swift 6.2 并发模型实战全指南 (Mastering Swift 6.2 Concurrency: A Complete Tutorial)
Swift 6.2 在并发模型上持续推进,新增多个有助于开发者迁移与调试的工具。Mathis Gaignet 在本文中系统梳理了 6.2 中与并发相关的重要更新,包括:默认主线程隔离、nonisolated(nonsending) 与 @concurrent 的使用语义、严格并发与 Sendable 推理机制、SwiftUI 实战陷阱解析,以及结构化并发的典型应用场景。文中还介绍了如何借助 Instruments 工具发现主线程阻塞问题。
工具
TrackWeight - 用触摸板来称重
一个脑洞大开的 macOS 应用:将你的 MacBook 触控板变成一个精确的数字称重秤!由 Krish Shah 开发的这个开源项目,在短短几天内便获得了数千颗 Star。
macOS 触控板只有在检测到电容接触时,才会触发压力事件——这意味着称重时,你的手指(或其他导电物体)必须始终与触控板保持接触。
Xcode Project Renamer
重命名 Xcode 项目一向麻烦,稍有不慎就可能导致项目无法编译。但使用 Marko Tadić 开发的 Xcode Project Renamer 工具,整个流程可以简化为一条命令:
./rename.swift "$OLD_PROJECT_NAME" "$NEW_PROJECT_NAME"
脚本会自动遍历项目目录中所有文件和文件夹,将旧项目名替换为新名称——无论是在文件名还是文件内容中。
Stewart Lynch 在这支视频中演示了使用方式,还介绍了通过 Homebrew 安装优化版命令行工具 xp-rename 的方法:
brew install stewartlynch/formulae/xp-renamer
⚠️ 唯一不会被自动重命名的是项目的根目录,需要手动更改。
iOS 后端选型速查图
你需要云服务吗?是否该自建服务器?该用 CloudKit、Firebase,还是其他方案?Leo G Dion 制作的这份 cheat sheet,通过图文方式系统梳理了 iOS 后端选型的关键路径,涵盖适用场景、技术要求与成本考量,适合作为项目立项阶段的决策参考。图中还特别标注了哪些方案可运行 Swift 服务器端代码。
想了解这张速查图背后的分析思路?可以阅读这篇配套文章:Choosing the Best Backend for your iOS App。