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