让 Swift 更强,也更简单

肘子的 Swift 周报 #062

2024 年 12 月 16 日

两年前,一位朋友问我,他六岁的孩子对编程产生了兴趣,有什么编程语言可以推荐。考虑到他已经有了 iPad 和 MacBook,我毫不犹豫地推荐了 Swift Playgrounds。几天前,另一位朋友也咨询了类似的问题,尽管我仍然推荐 Pla...

2024 年 12 月 18 日
SwiftUI onAppear 异常调用的陷阱与应对策略

onAppear 是 SwiftUI 中极其关键的生命周期方法,用于在视图呈现时注入关键逻辑。由于视图实例可能会频繁地被创建和重建,开发者通常会选择在这些方法中准备数据、执行初始化操作。理论上,这些生命周期方法的调用时机应当是可预测和一致的。然而,在某些特定场景下,onAppear 可能会出现非预期的、不必要的调用,这不仅可能导致性能开销,更可能引发应用状态的不可控变化。本文将揭示这一容易被忽视的 SwiftUI 行为陷阱,并提供临时的应对策略。

2024 年 12 月 11 日
Core Data 的模型继承

Core Data 的一个卓越特点是让开发者能够以更加接近面向对象编程的方式声明数据模型,同时无需关心底层的存储实现细节。在这个框架中,模型继承是一个尤为重要的机制。本文将深入探讨模型继承的核心概念,包括父实体(Parent Entity)、子实体(Sub Entity)和抽象实体(Abstract Entity);我们将分析它们的优缺点,并探讨在不直接使用这些功能时如何实现类似的效果。

2024 年 12 月 4 日
Typefully:轻松告别繁琐的社交媒体发布

随着社交媒体渠道的日益丰富,一个网络用户不知不觉间已拥有多个不同的社交账号。对于内容创作者和企业账号管理者而言,在各个社交平台上发布内容所需的准备工作正变得愈发繁琐。在过去的一个月里,我开始尝试使用 Typefully 来统一管理和发布多个社交平台的内容,本文中我将分享我的使用心得。

2024 年 11 月 27 日
有意为之还是技术缺陷?SwiftUI 多层导航中的 onChange 异常

SwiftUI 提供的 onChange 修饰器,使开发者能够在视图中监听特定值的变化,并在值发生改变时执行相应的操作。直觉上,只要某个视图位于当前可见的视图树分支中( 活动中 ),在观察的值发生变化时,对应的闭包就应该被触发。但在某些特定的导航场景下,onChange 修饰器似乎会“选择性失聪”,明明观察的值发生了变化,却诡异地保持沉默。这究竟是苹果精心设计的特性,还是一个隐藏已久的代码缺陷?本文将揭示这一现象并对开发者给予必要的提醒。

2024 年 11 月 20 日
在 SwiftData 和 Core Data 中用 Transaction 代替 Save

在数据持久化操作中,确保数据的一致性和完整性至关重要。SwiftData 框架通过在 ModelContext 中引入 transaction 方法,为开发者提供了一种更优雅的方式来组织和管理数据操作。本文将探讨如何运用事务(Transaction)的概念来构建更可靠、高效的持久化操作。

2024 年 11 月 13 日
理解 SwiftUI 的视图刷新机制:从 TimelineView 刷新问题谈起

SwiftUI 中,视图的自动刷新机制让我们能够轻松构建响应式的用户界面。但有时,视图可能并不会按照我们的预期进行更新。本文将通过一个看似简单但颇具代表性的 TimelineView 刷新问题,探讨 SwiftUI 的视图刷新机制。

2024 年 11 月 6 日
掌握 Core Data 和 SwiftData 中的数据追踪与通知

Core Data 和 SwiftData 作为 Apple 生态系统中强大的持久化框架,不仅提供了 @FetchRequest 和 @Query 这样的声明式数据监听工具,更内置了一套完整的数据追踪与通知机制。了解和掌握这些机制对于构建健壮的数据驱动型应用至关重要。本文将带你探索从简单的自定义通知,到强大的持久化历史追踪(Persistent History Tracking 和 SwiftData History)等多层次的解决方案,助你应对各种复杂的数据同步场景。

从项目重构说起:五个 Swift 模块分享

最近,我着手重构这个已有四年未进行大更新的应用。重构过程中,我将部分功能模块提取出来并开源分享。本文将简要介绍过去两个月中我开源的几个库。

每周一晚,与全球开发者同步,掌握 Swift & SwiftUI 最新动向
可随时退订,干净无 spam