ios swift init未初始化的实例变量

时间:2014-06-18 23:59:09

标签: ios swift init

对Swift有一个简单的问题。我有一个简单的基类Base和一个子类ABase:

class Base {
    var test1:Int

    init(forTest test1:Int) {
        self.test1 = test1
    }
}

class ABase : Base {
    var test3:Int

    init(forAnother test3:Int) {
        **super.init(forTest: test3)**
        self.test3 = test3
    }
}

我在ABase的init调用中的super.init(forTest:test3)行遇到编译器错误。错误是:

  

属性'self.test3'未在super.init调用中初始化。

我试图理解为什么我不能在Swift中使用未初始化的var初始化对象?

1 个答案:

答案 0 :(得分:2)

Swift有一个两阶段初始化,你需要先做所有成员的初始化。

init(forAnother test3:Int) {
    self.test3 = test3
    super.init(forTest: test3)
}

更多信息:

https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/Initialization.html

在页面上搜索两阶段初始化。

如果你需要调用super.init()(例如,如果test3取决于它的作用),你可以在声明中给test3一个初始值。