変数の値が変更された時に処理を差し込む

didSet、willSet

SwiftのwillSetdidSetはプロパティオブザーバで、値が変更される「直前」にwillSet(新しい値 newValue を参照可能)、値が変更された「直後」にdidSet(古い値 oldValue を参照可能)が実行され、プロパティの変更を検知して追加の処理を行うための仕組みです。違いはタイミングと参照できる値で、willSetは変更前、didSetは変更後、willSetnewValuedidSetoldValueを使います。 

willSet (変更前)

用途: 値が変更されることを事前に通知したい場合や、新しい値に基づいて何らかの準備をしたい場合。 willSetを使う

タイミング: プロパティの値が変更される直前に実行されます。

参照できる値newValueという特別な定数で、これから代入される新しい値にアクセスできます。

didSet (変更後)

  • タイミング: プロパティの値が変更された直後に実行されます。
  • 参照できる値oldValueという特別な定数で、変更される前の古い値にアクセスできます。
  • 用途: 値が変更された後にUIを更新する、ログを出力する、他のプロパティに影響を与えるなどの処理。 

まとめ

特徴 willSetdidSet
実行タイミング値が変更される直前値が変更された直後
参照できる値newValue (これから代入される値)oldValue (変更前の値)
主な用途変更前の準備、通知変更後の処理、UI更新

コメント

タイトルとURLをコピーしました