我想了解爲什麼Swift強制一個類符合協議,初始化符被標記爲需要。這基本上強制任何子類也實現該初始化器。當然,指定的超類初始化器會被繼承?Swift:在一個類中實現協議初始化器
您可以實現對符合 類無論是作爲指定初始化或便民初始化協議初始化要求。 在這兩種情況下,你必須標記與所需 修改初始化執行:
class SomeClass: SomeProtocol {
required init(someParameter: Int) {
// initializer implementation goes here
}
}
class SomeSubclass: SomeClass {
required init(someParameter: Int) { // enforced to implement init again
// initializer implementation goes here
}
}
的使用需要修改的,確保您在所有提供一個明確的 或繼承的執行初始化要求 符合類的子類,因此它們也符合 協議。
編輯: 我還沒有開始提到的,我目前僅限於雨燕2.1。它似乎是此版本中的編譯器問題,並且在更高版本中不會發生。
這對於將其標記爲必需的推理有很多意義。我猜是什麼讓我吃驚的是,在Swift 2.1中,即使子類沒有指定的初始化器,編譯器也會強制你實現超類初始化器。 –
將此標記爲已接受,因爲它解釋了我的問題「當然,指定的超類初始化程序會被繼承嗎?」原來的問題是由於Swift 2.1的限制。 –