【发布时间】:2014-10-09 17:02:07
【问题描述】:
我正在制作一个小自定义键盘,我在类中有一组变量,需要在“覆盖 init()”中进行初始化,如下所示:
class KeyboardViewController: UIInputViewController {
var button01: CharacterButton
var button02: CharacterButton
...
和
override init() {
//Initialize buttons and assign attributes
button01 = CharacterButton.createButton("Q", labelOfButton: "Q")
button02 = CharacterButton.createButton("W", labelOfButton: "W")
super.init()
}
除此之外,我还添加了以下代码,因为它显然是自 Xcode 6 beta 5 以来所必需的:
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
但是最后的 sn-p 代码会导致错误提示:
属性 'self.button01' 未在 super.init 调用时初始化
当我已经初始化了 'button01' 并在之前的 'override init()' 函数中调用了 'super.init()' 时,为什么会发生这种情况?这让我发疯了。
【问题讨论】:
-
尝试在您的 button01... 代码之前调用 super.init()。
-
我不能,这样做会给我另一个错误说:“self.button01 not initialized at super.init call”,本质上是说我必须先初始化按钮,然后再调用super。 init() 就像我在原始帖子中所做的那样。
标签: ios xcode swift initialization overriding