ObservableObject可以在Swift中使用吗?我只在SwiftUI中看到过它的教程。我希望能够通过API调用将一个对象加载到内存中。然后使用VC来操作它的不同部分,所有后续的VC都会对它做出响应。
是的,你可以使用 ObservableObject
即使你没有使用SwiftUI。请记住,使用这个需要最低的iOS 13。
但如果你不打算使用 ObservableObject
在SwiftUI的上下文中,确保你了解它的工作原理。ObservableObject
发送更新 之前 属性的更新值被设置。这是因为对象的 出版 使用 objectWillChange
出版商。我之所以指出这一点,是因为如果你使用了 sink
作为一种机制,通知您的VC有了新的值,而他们通过直接引用已发布的属性去抓取该值,他们仍然会得到旧的值,您不会看到您的屏幕更新了新的数据。
当使用 ObservableObject
在SwiftUI中,你一般不需要担心的是 objectWillChange
发布者,因为SwiftUI视图会在该发布者触发时自动更新。由于常规的视图控制器默认情况下不知道如何在这些发布者触发时更新自己,因此在使用 ObservableObject
作为数据模型很重要。