かんたんに
-
@Observable
は、マクロの一種 -
@State
,@Environment
,@Bindable
はプロパティラッパーの一種 -
@State
,@Environment
,@Bindable
は@Observable
とインターフェースさせるために利用される -
@State
は、ビューの状態をモデルに格納 -
@Environment
は、値をグローバルにアクセシブルな値として伝搬させる -
@Bindable
は、軽量、その型からバインディングを作成できるようにすることだけ
使い分け
モデルはビュー自体の状態である必要があるか? → Yes: @State
モデルはアプリケーションのグローバル環境の一部である必要があるか? → Yes: @Environment
モデルに必要なのはバインディングだけ? → Yes: @Bindable
全ての質問がYesでないなら、モデルをビューのプロパティとして使用するだけ
参考
Discover Observation in SwiftUI
あとがき
- 使い分けを知ることによりその用語の役割、機能について知ることが出来ました。
-
ObservableObject
から@Observable
への変更など古いSwiftUIからの移行についても案内されていて親切だと思いました。 - WWDC2024で早く新情報が提供されることに期待してます。