[解決済み】SwiftのwillSetとdidSetの目的は何ですか?
2022-04-01 04:38:59
質問
Swiftは、C#と非常によく似たプロパティ宣言の構文を持っています。
var foo: Int {
get { return getFoo() }
set { setFoo(newValue) }
}
しかし、それはまた
willSet
と
didSet
アクションを使用します。これらは、それぞれセッターが呼ばれる前と後に呼ばれます。セッターの内部で同じコードを書けばよいことを考えると、これらの目的は何なのでしょうか?
解決方法は?
ポイントは、自動保存機能を持つプロパティが必要な場合があることだと思われる
と
例えば、プロパティが変更されたことを他のオブジェクトに通知するなどの動作があります。もし
get
/
set
の場合、値を保持するために別のフィールドが必要になります。とは
willSet
と
didSet
を使えば、別のフィールドを用意しなくても、値が変更されたときにアクションを起こすことができます。例えば、その例では
class Foo {
var myProperty: Int = 0 {
didSet {
print("The value of myProperty changed from \(oldValue) to \(myProperty)")
}
}
}
myProperty
は、変更されるたびにその古い値と新しい値を表示します。ゲッターとセッターだけで、代わりにこれが必要になります。
class Foo {
var myPropertyValue: Int = 0
var myProperty: Int {
get { return myPropertyValue }
set {
print("The value of myProperty changed from \(myPropertyValue) to \(newValue)")
myPropertyValue = newValue
}
}
}
だから
willSet
と
didSet
は、数行の節約と、フィールドリストのノイズの減少を意味します。
関連
-
[解決済み】Thread 1: signal SIGABRTエラーを解決するには?[クローズド]
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] このコンテキストで型検索を行う場合、「メソッド」は曖昧である、Alamofireのエラー
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] プログラミング言語Swiftで文字列のn文字目を取得する
-
[解決済み】解決方法。iOS 13.0で'keyWindow'が非推奨になりました。
-
[解決済み】Swiftで初期化中にdidSetを呼び出せるようにすることは可能か?
-
[解決済み】swift 4でenumをDecodableにするにはどうすればいいですか?
-
[解決済み】Swiftで列挙型の値の名前を取得する方法は?
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] iPhone Simulator.appと一緒にXcodeも外付けハードディスクにインストールできますか?
-
[解決済み] なぜswiftではアンダースコアが必要なのですか?
-
[解決済み] Swiftのコンストラクタ
-
[解決済み] Fatal error.とは何ですか?Unexpectedly found nil while unwrapping an Optional value" とはどういう意味ですか?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftでdispatch_onceのシングルトンモデルを使う
-
[解決済み] 2倍値を小数点以下x桁に丸める処理を素早く行う。
-
[解決済み] テキストファイルからの文字列の読み込みと書き込み
-
[解決済み】Swiftのオプション値とは何ですか?
-
[解決済み】weak referenceとunowned referenceの違いは何ですか?