我正在编写一个UITextView子类,并将UITextView委托设置为self。我不希望客户端能够设置我的委托(因为否则子类变得毫无意义)。有没有办法让delegate
属性变为私有?
答案 0 :(得分:3)
我认为你不能覆盖超类中声明的属性的可见性。但是,您可以覆盖子类中的delegate
属性本身,以防止调用者在运行时设置委托:
override var delegate: UITextViewDelegate? {
get { return super.delegate }
set {
// either ignore this, or raise an error
}
}
然后,当您在子类中将委托设置为self时,请务必使用super
:
super.delegate = self