【发布时间】:2014-09-06 09:50:33
【问题描述】:
我希望能够使用 self 初始化属性 subviewGroup 但这给了我错误:属性 'self.gridView' 未在 super.init 调用时初始化
init(frame: NSRect) {
super.init(frame: frame)
subviewGroup = GridViewGroup(rows: 9, columns: 9, gridView: self)
}
/*** Properties ***/
let subviewGroup: GridViewGroup
如果我把 super.init() 放在这样的初始化之后
init(frame: NSRect) {
subviewGroup = GridViewGroup(rows: 9, columns: 9, gridView: self)
super.init(frame: frame)
}
/*** Properties ***/
let subviewGroup: GridViewGroup
我收到错误:在调用 super.init 之前使用了“self”
我知道我可以使用 Optional,但由于在 init() 调用之后它永远不会为零,因此它似乎没有必要。有没有办法在不将 subviewGroup 设为可选的情况下正确执行此操作?
这是一个使用可选的工作示例
/*** Initializers ***/
init(frame: NSRect) {
super.init(frame: frame)
subviewGroup = GridViewGroup(rows: 9, columns: 9, gridView: self)
}
/*** Properties ***/
let subviewGroup: GridViewGroup?
【问题讨论】:
-
我知道这与http://stackoverflow.com/questions/24351211/property-not-initialized-at-super-init-call 类似,但由于我没有足够的声誉,我无法对这个问题发表评论
-
我真正想知道的是是否有办法不使用 Optional
-
你有使用可选的工作示例吗?
-
@connor 我添加了一个使用可选的示例
-
感谢大家的快速回复选择@connor,因为他最先回复
标签: initialization swift optional