在从初始化程序返回之前,不会在所有路径上调用'super.init'

时间:2018-05-29 07:20:28

标签: ios swift inheritance

我是swift的新人,现在我陷入了继承。在这里,我使用两个班级A和B班。 B类继承了A类的一些属性。这是代码。

class A
{
    var objRunningJobs:UIViewController!
    var objCompletedJobs:UIViewController!
    init(objRunningJobs:UIViewController, objCompletedJobs: UIViewController) {
        self.objRunningJobs = objRunningJobs
        self.objCompletedJobs = objCompletedJobs
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

class B: A
{
    override init(objRunningJobs:UIViewController, objCompletedJobs: UIViewController) {
        super.init(objRunningJobs: objRunningJobs, objCompletedJobs: objCompletedJobs)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

在A类中,在初始化之后,在初始化程序返回之前,我没有在所有路径上调用'super.init'的错误。

1 个答案:

答案 0 :(得分:0)

简短回答:

class A: UIViewController {
let objRunningJobs: UIViewController
let objCompletedJobs: UIViewController

init(objRunningJobs:UIViewController, objCompletedJobs: UIViewController) {
    self.objRunningJobs = objRunningJobs
    self.objCompletedJobs = objCompletedJobs
    super.init(nibName: "TestNib", bundle: nil)
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}

替换' TestNib'和你的。 但这是初始化UIViewController子类的一种不好的方法。 也许,你不了解UIViewController及其层次结构的作用。你想在你的应用程序中做什么?