我在Mac应用程序中一直在玩Swift。
我一直在尝试添加一个非可选的实例变量,但好像我必须重写两个init方法。我最终得到的代码(编译)看起来像这样:
class CustomWindowController: NSWindowController {
var items: [Int]
required init(coder: NSCoder!) {
items = [1, 2, 3]
super.init(coder: coder)
}
override init(window: NSWindow!) {
items = [1, 2, 3]
super.init(window: window)
}
}
我试图抽象出items
初始化,但它不会编译,因为“`self在super init call之前使用”。这就是我试过的:
class CustomWindowController: NSWindowController {
var items: [Int]
required init(coder: NSCoder!) {
setup()
super.init(coder: coder)
}
override init(window: NSWindow!) {
setup()
super.init(window: window)
}
func setup() {
items = [1, 2, 3]
}
}
我有点困惑。这些是我的问题:
override
和required
之间的区别是什么?为什么每个初始化者需要不同的?答案 0 :(得分:1)