我有一个继承SKScene的基类:
class BaseClass: SKScene {
let round: Int!
}
继承基类的类:
class ChildClass: BaseClass {
override init(size: CGSize) {
super.init(size)
self.round = 1
}
}
不知何故,我无法修改self.round
。它说Cannot assign to 'round' in 'self'
。
我以为感叹号会让我稍后设置值。
答案 0 :(得分:2)
使用let
声明的属性只能在它们所属的类的初始值设定项中变化。如果您需要子类来更改值,您的选项是(1)将round
更改为var
声明或(2)在BaseClass
中创建接受值的初始值设定项round
。
第一个是微不足道的;这是第二个例子:
class BaseClass: SKScene {
let round: Int!
init(size: CGSize, round: Int) {
self.round = round
super.init(size: size)
}
}
class ChildClass: BaseClass {
init(size: CGSize) {
super.init(size: size, round: 1)
}
}
(退出init(coder:)
实施......)