LoginSignup
2
1

More than 3 years have passed since last update.

iOS13.3 @Publishedでの値更新からsinkが呼ばれなくなった?(ミス解決)

Posted at

iOS13.3では@Publishedでの値更新でsinkが呼ばれない?

起きたこと

iOS13.3に更新したところ、SwiftUIのEnvironmentObject上の@Publishedの更新通知が受け取れなくなりちょっとハマりました。結局の所、もともと更新通知を受け取る処理を書き間違えていたことが原因でした。

修正前

    let _ = self.model.$text.receive(on: DispatchQueue.main)
    .sink { (value) in
        print("receive")
        self.text = value
    }

修正後

var task:AnyCancellable? = nil
...
    self.task = self.model.$text.receive(on: DispatchQueue.main)
    .sink { (value) in
        print("receive")
        self.text = value
    }

きちんと戻り値のAnyCancellableを保持していないことが問題でした。考えてみれば納得なのですが、iOS13.2までは動いていたので見落としていました。戒めの意味を込めて記録しておきます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1