Jas*_*son 5 xcode uiview ios swift xcode8
如何在Swift中定义只读属性?我有一个父类,需要定义一个公共属性,例如。itemCount。这是我的代码:
Class Parent: UIView {
private(set) var itemCount: Int = 0
}
class Child {
private(set) override var itemCount {
get {
return items.count
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到错误: Cannot override mutable property with read-only property
我不能使用协议,因为它们不能从类(UIView)继承
我将一个添加var view = UIView到我的Child类中,并UIView从Parent该类中删除继承。这似乎是唯一可能的方法,但是在我的实际项目中,似乎做错了事,例如。addSubview(myCustomView.view)
UIView的Child类我也不能这样做,因为我打算拥有多个Child具有不同属性和行为的相关类,并且我需要能够将Child类的实例声明为Parent类,以利用UIView'属性和Parent'公共属性。
您可以使用Computed Property可以被覆盖的(类似于方法)。
class Parent: UIView {
var itemCount: Int { return 0 }
}
class Child: Parent {
override var itemCount: Int { return 1 }
}
Run Code Online (Sandbox Code Playgroud)
这就是您声明和覆盖函数的方式
class Parent: UIView {
func doSomething() { print("Hello") }
}
class Child: Parent {
override func doSomething() { print("Hello world!") }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9067 次 |
| 最近记录: |