是否可以覆盖超级属性/方法以使其在swift中保密?

时间:2016-03-03 15:54:12

标签: ios swift

我正在编写一个UITextView子类,并将UITextView委托设置为self。我不希望客户端能够设置我的委托(因为否则子类变得毫无意义)。有没有办法让delegate属性变为私有?

1 个答案:

答案 0 :(得分:3)

我认为你不能覆盖超类中声明的属性的可见性。但是,您可以覆盖子类中的delegate属性本身,以防止调用者在运行时设置委托:

override var delegate: UITextViewDelegate? {
    get { return super.delegate }
    set {
        // either ignore this, or raise an error
    }
}

然后,当您在子类中将委托设置为self时,请务必使用super

super.delegate = self