Sobes.tech
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
    }
}