我的应用程序有两个ObservableObject
:
@main
struct SomeApp: App {
@StateObject private var foo = Foo()
@StateObject private var bar = Bar()
var body: some Scene {
WindowGroup {
AppView()
.environmentObject(foo)
.environmentObject(bar)
}
}
}
class Foo: ObservableObject {
@Published var operationResult: Bool?
private let operationQueue = OperationQueue()
func start() {
operationQueue.addOperation(SomeOperation())
// SomeOperation will set operationResult
}
}
class Bar: ObservableObject {
@Published var resultsAvailable = false
func updateResults(operationResult: Bool) {
if operationResult && someOtherCondition {
resultsAvailable = true
}
}
}
在某些时候,Foo
正在后台线程上做一些工作。完成后,Bar
需要更新状态,可能通过调用updateResults()
. 在传统的 UIKit 应用程序中,我可能会通过设置回调处理程序或发布NSNotification
.
不是operationResult
通过通知或处理程序传递,有没有办法Bar
订阅对Foo
属性的更改operationResult
?在我到目前为止发现的示例中,似乎订阅可能仅在View
结构内部可用,但我无法确认或否认这一点。