将Swift {获取设置}属性重写为{仅获取}属性。将变量设为常量

时间:2019-09-20 23:16:42

标签: swift inheritance overriding

是否可以将变量覆盖为常数? 基本上,这是我能想到的最好的方法:

class TextStyle: UITextLabel {
    private let _textStyle: FontStyle
    override public var textStyle: FontStyle {
        get { return _textStyle }
        set {
            #warning ("you cant set")
            if newValue != _textStyle {
                self.textStyle = _textStyle
            }
        }
    }

    init(frame: CGRect, textStyle: FontStyle) {
        self._textStyle = textStyle
        super.init(frame: frame)
    }

    required public init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

如果无法将var覆盖为常量,我希望在编译时通知用户他们无法设置该属性。 #warning不起作用,只是我能想到的最好的。我相信可以使用协议来完成此操作,这更复杂。类似于可编码,可编码和可解码。

0 个答案:

没有答案