【发布时间】:2020-06-22 10:36:10
【问题描述】:
我的class 需要一个init(size:) constructor 用于initialization,并且需要在我的variables 之后调用super.init(size:size)。这是有问题的,因为我想用size 初始化我的variables。如果我试试这个:
override init(size: CGSize) {
tileWidth = self.frame.width/8
tileHeight = tileWidth/2
super.init(size: size)
}
...然后我得到一个error 说
“self”在“super.init”调用之前用于属性访问“frame”
如果我这样做:
override init(size: CGSize) {
super.init(size: size)
tileWidth = self.frame.width/8 //140
tileHeight = tileWidth/2
}
...我收到一条错误消息
属性 'self.tileHeight' 未在 super.init 调用时初始化
那么我该如何实现呢?
编辑 在其上下文中,代码如下所示:
class TileBoard: SKScene {
let tileWidth:CGFloat
let tileHeight:CGFloat
override init(size: CGSize) {
super.init(size: size)
tileWidth = self.frame.width/8
tileHeight = tileWidth/2
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
【问题讨论】:
-
将它们设为可选?很难说你是否对我们隐瞒了类和超类的声明。
标签: swift dependency-injection initialization init