忘れてしまった時に コピペで使用できるスニペットシリーズ willSet/didSet 編
Sponsor Link
環境&対象
以下の環境で動作確認を行なっています。
- macOS Ventura 13.3 Beta3
- Xcode 14.3 Beta2
- iOS 16.0
willSet/didSet
Swift では stored property が変更される直前・直後の処理を記述できます。
The Swift Programming Language での説明は、こちら。
コード例
class MyClass {
var variableName: Int = 10 {
willSet(newValue) { // newValue is default parameter name for new value
print("\(newValue) will replace")
}
didSet(oldValue) { // oldValue is default parameter name for old value
print("\(oldValue) was replaced")
}
}
}
注意点:
willSet でプロパティを変更しても上書きされてしまいます。
didSet では、プロパティを上書きすることが可能です。
まとめ
プロパティ変更の 直前・直後の処理を記述
プロパティ変更の 直前・直後の処理を記述
- willSet は、変更直前の処理
- didSet は、変更直後の処理
- willSet では 新しい値を newValue で参照できる(パラメータ名指定可能)
- didSet では 古い値を oldValue で参照できる(パラメータ名指定可能)
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Swift学習におすすめの本
詳解Swift
Swift の学習には、詳解 Swift という書籍が、おすすめです。
著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。
リンク
最新版を購入するのがおすすめです。
現時点では、上記の Swift 5 に対応した第5版が最新版です。
Sponsor Link