Observation

A collection of 4 posts
Observation

Observation|创建 ViewModel 实例的方式

Combine 在 Combine 框架中,通常使用 @StateObject 在 View 中创建 ViewModel 实例。 ViewModel 实例的生命周期: * @State 跟随 View * @StateObject 独立管理,View 重建时保持 以上,是很好的实践方案。 Observation 中的问题 但在 Observation 框架中,不再能使用 @StateObject。如果使用 @State,会导致 ViewModel 预期之外的创建。 实际情况很复杂,并不是每次 View 更新都会导致 ViewModel 重建。例如如果有多个 View 使用同一个 ViewModel(例如 SummaryView 和 DetailView),就会导致同时存在多个 ViewModel
2 min read
Observation

Observation|使用 withObservationTracking 监听跨对象依赖变化

使用 Observable 标记的类,可以让 SwiftUI 的视图自动响应数据变化并刷新界面。但如果数据变化发生在视图之外,我们该如何观察这些变化呢? 一种常见的场景是跨 ViewModel 的属性依赖:在一个 ViewModel 中,可能需要根据另一个 ViewModel 的属性变化来更新自身的数据——例如调用 fetch() 方法重新获取内容。那么,如何才能在源数据变化时,确保依赖方能感知并作出响应? 我们在以下文章中,探讨了如何在 Observable 类中使用 didSet 属性观察器来监听数据变化: Observation|使用 didSet/willSet 属性观察器了解如何使用 Swift 中的属性观察器。Code With Ivens廖林 虽然 didSet 对监听自身属性变化非常有用,但它无法处理跨 ViewModel 的依赖关系。这时,withObservationTracking 就派上用场了 —— 它专为监听其他 Observable
2 min read