📖
@Published とは
プロパティラッパーの一つ。
プロパティの値が変更されるたびに、関連するビューに変更が反映されます。
ObservableObject プロトコルを適用したクラスまたは構造体でしか使用できない。
上記のクラスまたは構造体で@Published属性が付いたプロパティの値を監視する。→変更があればBindingされているViewが更新される
@Stateとの違い
@Published
属性と@State
属性は、SwiftUIにおける状態の管理に使用される属性ですが、いくつかの違いがあります。
- 用途:
-
@Published
属性:@Published
属性は、ObservableObject
プロトコルを適用したクラスまたは構造体で使用されます。状態の変更を監視し、それを他のオブジェクトに公開するために使用されます。 -
@State
属性:@State
属性は、ビュー内の状態の管理に使用されます。ビュー内のプロパティの変更を監視し、ビューを再描画するために使用されます。
-
- まとめ:
- @Published属性はObservableObject を適用しクラスまたは構造体でしか使えない
- @State属性はViewの中で値を監視する
- 実装の場所:
-
@Published
属性:@Published
属性は、ObservableObject
を実装するクラスまたは構造体のプロパティに適用されます。通常、ObservableObject
を適用した独立したクラスやビューモデルに使用されます。 -
@State
属性:@State
属性は、ビュー内のプロパティに直接適用されます。通常、ビューの状態を管理するために使用されます。
-
- オブジェクトの公開:
-
@Published
属性:@Published
属性を持つプロパティは、変更が発生したときに自動的に変更イベントを発行します。これにより、他のオブジェクトがその変更を監視し、必要な場合に更新を受け取ることができます。 -
@State
属性:@State
属性を持つプロパティは、ビュー内でのみ使用されます。変更が発生した場合、SwiftUIは自動的にビューを再描画して変更を反映しますが、他のオブジェクトが変更を監視することはありません。
-
簡潔に言えば、@Published
属性は外部のオブジェクトに状態の変更を公開するために使用され、@State
属性はビュー内でのみ使用されるローカルな状態の管理に使用されます。
Discussion