【Swift】プロパティオブザーバとは?willSetとdidSetの使い方
この記事からわかること
- Swiftのプロパティオブザーバとは?
- willSetとdidSetの使い方
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
Swiftのプロパティオブザーバについてまとめていきます。
参考文献: 2.10.3. プロパティオブザーバ | プロパティ | Swift
プロパティオブザーバとは?
おすすめ記事:【Swift】プロパティの種類!ストアドプロパティやタイププロパティとは?
プロパティオブザーバ(property-observer)とはプロパティの値を観測して処理を実行できる機能です。プロパティの値が更新される直前と直後に任意の処理を行わせることができるのでプロパティの更新回数などをカウントすることが可能になります。
Swiftではプロパティオブザーバを実装するためにwillSet
オブザーバとdidSet
オブザーバが用意されています。
willSet
プロパティの値が更新される直前に呼び出される
didSet
プロパティの値が更新される直後に呼び出される
willSetの使い方
オブザーバはプロパティの中に記述します。クロージャー形式で任意の処理を渡すことができ、willSet
の場合はパラメータ名newValue
で更新される新しい値を参照することができます。
class Sample {
var num: Int = 0 {
willSet {
print("\(newValue)に更新されます")
}
}
}
let obj = Sample()
obj.num = 12 // 12に更新されます
willSet(newMyValue)
のように(パラメータ名)
で任意のパラメータ名に変更することもできます。未指定ならnewValue
になります。
class Sample {
var num: Int = 0 {
willSet(newNum) {
print("\(newNum)に更新されます")
}
}
}
didSetの使い方
記述方法はwillSet
と同じですが、クロージャー内から参照できるのはパラメータ名oldValue
で更新前の古い値になります。didSet
ではパラメータ名を任意のものに変更することができません。
class Sample {
var num: Int = 0 {
didSet {
print("更新前の値は\(oldValue)")
}
}
}
let obj = Sample()
obj.num = 12 // 更新前の値は0
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。