Closed3

SwiftUIをざっくり理解したもの

quesera2quesera2

@Publishedプロパティラッパーがついたプロパティが更新されると、Modelのすべてのプロパティがチェックされて、更新があればViewに反映される。

one-way bindingであれば単にプロパティから最新の値が取得されるだけだが、two-way bindingの場合はBinging<T>でなければならない。

このとき、@StateObjectのプロパティラッパーがprojectedValueとしてObservedObject.Wrapperを持っていて、この構造体が@dynamicMemberLookupの機能を持っているので、$model.propertyの構文でBinding<T>型のプロパティを取得することができる。

quesera2quesera2

最近のマニアックな言語仕様を知らないと、SwiftUIの挙動をちゃんと理解できない(というかSwiftUIのために言語仕様を追加してる?)感じがありますね

このスクラップは2022/02/17にクローズされました