几天前,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 软硬件能力的不断提升和生态系统的日趋完善,它或许将不再仅仅是桌面设备的补充,而会在专业领域走出属于自己的独特生态之路。
原创
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。