私はGetプロパティとSetプロパティを使用する理由についていくつかの調査を行っていました。Swiftのゲッターとセッター - 代わりにWillSetとDidSetを使用するのは理にかなっていますか?
あなたはあなただけから入手することができますプロパティを持つようにしたい場合は、あなたが実際に 財産
- のための3つの主な理由を気づきましたそれは (多分私は推測するセキュリティの目的のため?)、または別のアクセス レベルを与える。
- 代替表現を使用して プロパティを公開しながら、プロパティの内部表現を非表示にします。
を(私はとにかく Set関数を使用して、間違った場所にアクセスすることができますので、これは私のため は多くの意味がありません)以下のコードは、あなたが取得する実装する方法の例であるとするために設定してください私が言及した3ポイントを利用してスウィフトのプロパティ、:
class Test
{
private var _testSet:String!
private var _testGetOnly:String
var testSet:String{
get{
return _testSet
}
set{
_testSet = newValue + "you forgot this string"
}
}
var testGetOnly:String!{
get{
return _testGetOnly
}
}
init(testSet:String, testGetOnly:String)
{
_testSet = testSet
_testGetOnly = testGetOnly
}
}
しかし、また、言及したこれらのポイントを利用する代わりに、プライベートプロパティ値を返すために、別の計算されたプロパティを使用しての私はちょうどwillSetを使用して、以下のこの他の例そして、オブザーバーを設定しました
class Test
{
var testGet:String {
willSet{
fatalError("Operation not allowed")
}
}
var testWillSet:String!{
didSet{
self.testWillSet = self.testWillSet + "you forgot this string"
}
}
init(testGet:String, testWillSet:String)
{
self.testGet = testGet
self.testWillSet = testWillSet
}
}
私はそれぞれの実装の利点と欠点を知りたいと思っています。事前に
おかげ
非常に興味深い質問ですが、暴徒が発見されて以来、本当に助けになることはできません。 .. –
willSetとdidSetは** observors **です。彼らはゲッター/セッターとはまったく異なります。 (Swiftのプロパティ(プロトコル拡張など)はプロパティでなくてもよく、それらは計算プロパティです)。 、それは非常に頻繁に**あなたが退屈なプロパティ/ゲッター/セッターパターンを使用することについて**気にする必要はありません。 – Fattie