Swiftはプロパティもオーバーライドできる

バージョン

  • Swift 3.0.2
  • Xcode 8.2.1

クラスのプロパティ

知らなかっただけなのですが、Swiftはプロパティもオーバーライドできます。

使い方次第で便利に使えそう。

サンプルコード

プロパティのオーバーライドとプロパティ監視を組み合わせて、ボタンが無効化されたらアルファ値を変えるコードです。

import UIKit

class CustomButton: UIButton {
    override var isEnabled: Bool {
        didSet {
            super.isEnabled = isEnabled
            self.alpha = isEnabled ? 1.0 : 0.4
        }
    }
}

let customButton: CustomButton = CustomButton()

print(customButton.isEnabled) // true
print(customButton.alpha) // 1.0
customButton.isEnabled = !customButton.isEnabled

print(customButton.isEnabled) // false
print(customButton.alpha) // 0.4