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