SwiftUI中objectWillChangeSequence对比onChange修饰符的作用是什么?
SwiftUI导航状态持久化实现疑问
示例来自WWDC22视频《SwiftUI导航实用手册》。
我们创建了NavigationModel用于存储导航路径,核心逻辑如下:
- 视图出现时,若SceneStorage中存在数据,则加载到
NavigationModel中 - 每当
NavigationModel发生变化时,通过监听自定义的objectWillChangeSequence计算属性,将其数据序列化后保存到SceneStorage中
这里有个疑问:为什么不直接使用.onChange修饰符来实现保存逻辑?比如像下面这样写:
.onChange(of: navModel.path) { _ in data = navModel.jsonData }
注:objectWillChangeSequence属性的定义如下:
var objectWillChangeSequence: AsyncPublisher<Publishers.Buffer<ObservableObjectPublisher>> { objectWillChange.buffer(size: 1, prefetch: .byRequest, whenFull: .dropOldest).values }

内容的提问来源于stack exchange,提问作者parapote
相关产品推荐
相关产品推荐

