Middle
Aký je rozdiel medzi conventions a designated?
sobes.tech AI
Odpoveď od AI
Konzolové inicializátory sú sekundárne, môžu volať iba iné inicializátory rovnakej triedy, delegujúc nakoniec volanie na určený inicializátor. Používajú sa na pridanie pohodlných spôsobov vytvárania inštancií.
Určené inicializátory sú hlavné, zabezpečujú úplnú inicializáciu všetkých uložených vlastností triedy (svojich a rodičovských). Môžu volať určené inicializátory rodičovskej triedy. Každá trieda by mala mať aspoň jeden určený inicializátor.
class BaseClass {
var baseProperty: String
init(baseProperty: String) { // Určený inicializátor
self.baseProperty = baseProperty
}
}
class DerivedClass: BaseClass {
var derivedProperty: Int
init(baseProperty: String, derivedProperty: Int) { // Určený inicializátor
self.derivedProperty = derivedProperty
super.init(baseProperty: baseProperty) // Volanie určeného inicializátora rodiča
}
convenience init(baseProperty: String) { // Pohodlný inicializátor
self.init(baseProperty: baseProperty, derivedProperty: 0) // Delegácia na vlastný určený inicializátor
}
convenience init() { // Pohodlný inicializátor
self.init(baseProperty: "Default Base", derivedProperty: -1) // Delegácia na vlastný určený inicializátor
}
}