ほぼ chatGPT の回答だけど、分かりやすかった。
@MainActor
@MainActor属性はSwift5.5で導入された、Concurrency(並行性)をサポートするための属性です。Swift5.5では、非同期関数(async function)を実行する場合に、その実行コンテキストが実行スレッドと一致している必要があります。@MainActor属性がついた関数は、メインスレッドで実行されることが保証されます。
@StateObject
@StateObject属性は、状態を保持するためのオブジェクトを表すプロパティに使用されます。この属性がついたプロパティの値は、ビューのライフサイクル中に変更される可能性があるため、変更されたときにビューを再描画することができます。Viewが再描画しても値を保持します
@Published
@Published属性は、変数の値の変更を監視し、その変更を自動的に通知するために使用されます。変数にこの属性を付けることで、その変数の値が変更された場合に、SwiftUIビューを再描画することができます。
@ObservedObject
@ObservedObject属性は、状態を保持するためのオブジェクトを表すプロパティに使用されます。この属性がついたプロパティの値は、ビューのライフサイクル中に変更される可能性があるため、変更されたときにビューを再描画することができます。Viewが再描画する度にインスタンスを再生成します
@Binding
@Binding属性は、親のビューから子のビューに値を渡すために使用されます。@Binding属性が付いたプロパティは、値を取得するだけでなく、変更することもできます。
@EnvironmentObject
@EnvironmentObject属性は、状態を保持するためのオブジェクトを表すプロパティに使用されます。この属性がついたプロパティの値は、親のビューから渡されます。親のビューでこの属性がついたオブジェクトが状態変更された場合、その変更は子のビューでも自動的に反映されます。
@
「@」は、属性(Attribute)を表すシンボルです。属性を使用することで、SwiftUIビューに機能を追加することができます。属性は、「@属性名」のように記述されます。
なるほどなぁ、と思いつつ AI の回答とすり合わせていくことと、自分でコード書いてって使う場面とか考えていかんとなぁ。
引き続きコード読み込んで理解につとめていくことが課題である。
コメント