Middle
Mi a különbség a conventions és a designated között?
sobes.tech MI
Válasz az MI-től
Kényelmi inicializálók másodlagosak, csak ugyanazon osztály más inicializálóit hívhatják meg, végül a kijelölt inicializálóra delegálva. Az instanciák létrehozásának kényelmes módjait adják hozzá.
A kijelölt inicializálók fő inicializálók, biztosítják az osztály összes tárolt tulajdonságának teljes inicializálását (saját és szülő osztályét). Hívhatják a szülő osztály kijelölt inicializálóit. Minden osztálynak legalább egy kijelölt inicializálóval kell rendelkeznie.
class BaseClass {
var baseProperty: String
init(baseProperty: String) { // Kijelölt inicializáló
self.baseProperty = baseProperty
}
}
class DerivedClass: BaseClass {
var derivedProperty: Int
init(baseProperty: String, derivedProperty: Int) { // Kijelölt inicializáló
self.derivedProperty = derivedProperty
super.init(baseProperty: baseProperty) // Szülő kijelölt inicializálójának hívása
}
convenience init(baseProperty: String) { // Kényelmi inicializáló
self.init(baseProperty: baseProperty, derivedProperty: 0) // Delegálás saját kijelölt inicializálóra
}
convenience init() { // Kényelmi inicializáló
self.init(baseProperty: "Default Base", derivedProperty: -1) // Delegálás saját kijelölt inicializálóra
}
}