对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初始化对象?
答案 0 :(得分:2)
Swift有一个两阶段初始化,你需要先做所有成员的初始化。
init(forAnother test3:Int) {
self.test3 = test3
super.init(forTest: test3)
}
更多信息:
在页面上搜索两阶段初始化。
如果你需要调用super.init()(例如,如果test3取决于它的作用),你可以在声明中给test3一个初始值。