https://onevcat.com/2023/08/observation-framework/
在订阅引用类型时,ObservableObject
扮演着 Model 类型的角色,但它存在一个严重的问题,即无法提供属性粒度的订阅。在 SwiftUI 的 View 中,对ObservableObject
的订阅是基于整个实例的。只要ObservableObject
上的任何一个@Published
属性发生改变,都会触发整个实例的objectWillChange
发布者发出变化,进而导致所有订阅了这个对象的 View 进行重新求值。在复杂的 SwiftUI 应用中,这可能会导致严重的性能问题,并且阻碍程序的可扩展性。因此,使用者需要精心设计数据模型,以避免大规模的性能退化。