web-dev-qa-db-ja.com

Swiftでセッターをオーバーライドする方法

スーパークラス:

class MySuperView : UIView{
    var aProperty ;
}

スーパークラスのサブクラス継承:

class Subclass : MySuperClass{
    // I want to override the aProperty's setter/getter method
}

スーパークラスのプロパティのセッター/ゲッターメソッドをオーバーライドしたい

Swift?でこのメソッドをオーバーライドする方法を教えてください、ありがとうございます。

25
user5465320

カスタムセッターで何をしたいですか?値を設定する前後にクラスに何かをさせたい場合は、willSet/didSetを使用できます。

class TheSuperClass { 
   var aVar = 0 
} 

class SubClass: TheSuperClass { 
     override var aVar: Int { 
         willSet { 
            print("WillSet aVar to \(newValue) from \(aVar)") 
        } 
        didSet { 
            print("didSet aVar to \(aVar) from \(oldValue)") 
        } 
    } 
} 


let aSub = SubClass()
aSub.aVar = 5

コンソール出力:

WillSet aVarを0から5に

didAvaを0から5に設定

ただし、セッターがスーパークラスと対話する方法を完全に変更する場合:

class SecondSubClass: TheSuperClass { 
     override var aVar: Int { 
        get {
            return super.aVar
        }
        set { 
            print("Would have set aVar to \(newValue) from \(aVar)") 
        } 
    } 
} 

let secondSub = SecondSubClass()
print(secondSub.aVar)
secondSub.aVar = 5
print(secondSub.aVar)

コンソール出力:

AVarを0から5に設定していたでしょう

46
MaddTheSane