【发布时间】:2016-07-12 00:17:08
【问题描述】:
如何在 Swift 中定义只读属性?我有一个父类需要定义一个公共属性,例如。 itemCount。这是我的代码:
Class Parent: UIView {
private(set) var itemCount: Int = 0
}
class Child {
private(set) override var itemCount {
get {
return items.count
}
}
}
我收到错误:Cannot override mutable property with read-only property
选项 1 - 协议:
我不能使用协议,因为它们不能从类继承 (UIView)
选项 2 - 组成:
我将 var view = UIView 添加到我的 Child 类中,并从我的 Parent 类中删除 UIView 继承。这似乎是唯一可能的方法,但在我的实际项目中,这似乎是错误的做法,例如。 addSubview(myCustomView.view)
选项 3 - Child 类的子类 UIView
我也不能这样做,因为我打算拥有多个具有不同属性和行为的相关 Child 类,并且我需要能够将我的 Child 类的实例声明为要采用的 Parent 类UIView 的属性和Parent 的公共属性的优势。
【问题讨论】:
标签: ios swift xcode uiview xcode8