2014-06-18 290 views
0

在Swift上有一個簡單的問題。我有一個簡單的基類基地和子類ABASE:線在ABASE我的init電話:ios swift初始化未初始化的實例變量

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 
    } 
} 

我在super.init(TEST3 forTest)得到一個編譯錯誤。錯誤是:

屬性'self.test3'沒有在super.init調用初始化。

我想了解爲什麼我不能在Swift中初始化一個未初始化的var對象?

回答

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一個初始值。