Cocoa touch swiftxcode中的Init

Cocoa touch swiftxcode中的Init,cocoa-touch,swift,Cocoa Touch,Swift,我创建了一个新的Cocoa Touch类(用Swift编码),并注意到当其他人这样做时,他们会有代码 init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) } 如果他们没有添加代码 init(coder aDecoder: NSCoder!) { super.

我创建了一个新的Cocoa Touch类(用Swift编码),并注意到当其他人这样做时,他们会有代码

    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
如果他们没有添加代码

init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
}

它不会运行。我的代码似乎可以在Xcode6 Beta 3上运行,但两者都没有。你能解释一下它的作用以及我是否需要它吗?

如果你的init函数只是调用super.init,你就不需要它了。但是,如果需要初始化类中的某些变量/let,则需要提供适当的init函数,并在完成后调用super函数


根据您正在执行的操作(使用故事板、NIB或手动创建视图等),您需要提供相应的初始化功能。

Yup。阅读Swift手册中的“初始化”一章很有用。在“类继承和初始化”和“自动初始化器继承”部分中描述了这种情况下的情况。(不过,就我个人而言,这是本书中“最重”的章节之一;在我开始理解事情的运作方式之前,我不得不读了几遍。)