[SwiftUI] Swiftでのインスタンス変数監視

Swift

Swiftでclassやstructを宣言してメンバー変数を定義したときに、その値が変更されたときに何か処理したいことあります。その方法を説明します。
デバッグの時にも便利です。

プロパティ監視

Swift 言語そのものが、プロパティ変更を監視するための仕組みを提供しています。

Swiftが用意している仕組み
willSet
変更前に、ブロックを実行することができます
didSet
変更後に、ブロックを実行することができます

SwiftUIであれば、@State等の仕組みで、定義された変数の変更からビュー再構築ができますので、これらが使われるのは、変数の変更に合わせて特定の処理を行わせたい場合です。




willSet/didSet

そのものズバリが、Swiftで定義されてました。

以下は、alarmOnという変数が変更されると、updateAlarmTimerという関数が呼ばれます。

引数に、新しい値が渡されるので、必要であれば参照できます。

@Stateとの組み合わせもOK

SwiftUIの仕組みを使いたいのであれば、@State等と組み合わせることもできます。




まとめ

ある変数を監視して、何らかの処理を行いたいのであれば、willSet/didSetを使えばできます。

注意
その処理が、GUIの更新であるならば、SwiftUIの仕組みを使用して更新する方が良いので、@Stateや@Publisedを使いましょう。




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です