Middle
Wat is het verschil tussen conventies en aangewezen?
sobes.tech AI
Antwoord van AI
Convenience initializers zijn secundair, ze kunnen alleen andere initializers van dezelfde klasse aanroepen, en delegëren uiteindelijk de oproep naar de aangewezen initializer. Ze worden gebruikt om handige manieren toe te voegen om instanties te maken.
Aangewezen initializers zijn de hoofdinitializers, ze garanderen de volledige initialisatie van alle opgeslagen eigenschappen van de klasse (zowel die van zichzelf als die van de ouderklasse). Ze kunnen aangewezen initializers van de ouderklasse aanroepen. Elke klasse moet minstens één aangewezen initializer hebben.
class BaseClass {
var baseProperty: String
init(baseProperty: String) { // Aangewezen initializer
self.baseProperty = baseProperty
}
}
class DerivedClass: BaseClass {
var derivedProperty: Int
init(baseProperty: String, derivedProperty: Int) { // Aangewezen initializer
self.derivedProperty = derivedProperty
super.init(baseProperty: baseProperty) // Aanroep van de aangewezen initializer van de ouder
}
convenience init(baseProperty: String) { // Convenience initializer
self.init(baseProperty: baseProperty, derivedProperty: 0) // Delegatie naar eigen aangewezen initializer
}
convenience init() { // Convenience initializer
self.init(baseProperty: "Default Base", derivedProperty: -1) // Delegatie naar eigen aangewezen initializer
}
}