簡體   English   中英

SwiftUI:為什么 ObservedObject 在 AppDelegate 中不起作用?

[英]SwiftUI: Why doesn't ObservedObject work in AppDelegate?

我已經嘗試過ObservableObject 文檔中的示例。

class Contact: ObservableObject {
    @Published var name: String = "me"
    @Published var age: Int = 7
}

當我使用代碼制作 Swift 游樂場時:

let c = Contact()
c.objectWillChange.sink { print("This prints") }
c.age += 1

objectWillChange觸發並打印行。

到目前為止,一切都很好。

我現在在 SwiftUI 中創建一個視圖:

struct ContentView: View {
    @ObservedObject var contact = Contact
    ...

我在 AppDelegate 中創建此視圖,然后執行以下操作:

   contentView.contact.objectWillChange.sink { print("This doesn't print.") }

我已將聯系人連接到各種控件,更改任何字段都會更新所有控件。 執行onReceive(contact.objectWillChange)也可以。 但沒有在 AppDelegate 中連接到它。 我嘗試記錄deinit()以確保我們談論的是相同的 object。 我試過使用ImmediateScheduler 沒有骰子。 為什么這不起作用?

當您使用.sink創建訂閱時,您必須保存返回的AnyCancellable object

let cancellable = publisher.sink { ... }

如果將其分配給變量,請確保它不是短暫的。 一旦可取消的 object 被解除分配,訂閱也將被取消。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM