初心者プログラミング日記 SwiftUI ⑥ ObseravableObject
WWDC20 Data Essential in SwiftUIを見ています。
2つ目のルカさんのパートはObseravableObjectについてでした。
下記初心者の私の意訳なので、違う可能性ありありです。
@Stateと@Bindingでも良いけど、本来データやプログラムはUIとは分けるよね?
そうなると@State と@Bindingは使えないから、その場合の方法を伝えるね。
その場合はクラスでObseravableObjectを使うんだ。
で、使いたいプロパティに@Publishedをつけると、そのタイプにした、
@ObservedObject
@StateObject
@EnvironmentObject
をつけたプロパティをSwiftUIが監視して、どれかに変化があったら、全部変更してくれるよ。
@ObseravedObjectは更新したいインスタンスにつければ良い。
でも、例えば更新したけど、そのUIが削除されてしまう可能性があるインスタンスもあるよね。
そういう時は、@StateObjectを使うんだ。削除された後のタイミングでUIを更新するからね。
あとは、複雑な構造になって、@ObseravedObjectから階層的に遠いViewのインスタンスを更新したい時。その時は、@EnvironmentObjectを使えば、直接的に使えるよ。