Closed3
SwiftUIをざっくり理解したもの
@Published
プロパティラッパーがついたプロパティが更新されると、Modelのすべてのプロパティがチェックされて、更新があればViewに反映される。
one-way bindingであれば単にプロパティから最新の値が取得されるだけだが、two-way bindingの場合はBinging<T>
でなければならない。
このとき、@StateObject
のプロパティラッパーがprojectedValue
としてObservedObject.Wrapper
を持っていて、この構造体が@dynamicMemberLookup
の機能を持っているので、$model.property
の構文でBinding<T>
型のプロパティを取得することができる。
最近のマニアックな言語仕様を知らないと、SwiftUIの挙動をちゃんと理解できない(というかSwiftUIのために言語仕様を追加してる?)感じがありますね
このスクラップは2022/02/17にクローズされました