Sobes.tech
Middle

Was ist der Unterschied zwischen conventions und designated?

sobes.tech KI

Antwort von AI

Bequeme Initializer sind sekundär, sie können nur andere Initializer derselben Klasse aufrufen, und delegieren letztendlich den Aufruf an den vorgesehenen Initializer. Sie werden verwendet, um bequeme Wege zur Erstellung von Instanzen hinzuzufügen.

Vorgesehene Initializer sind die Hauptinitialisierer, sie gewährleisten die vollständige Initialisierung aller gespeicherten Eigenschaften der Klasse (sowohl eigener als auch der der Elternklasse). Sie können vorgesehene Initializer der Elternklasse aufrufen. Jede Klasse muss mindestens einen vorgesehenen Initializer haben.

class BaseClass {
    var baseProperty: String

    init(baseProperty: String) { // Vorgesehener Initializer
        self.baseProperty = baseProperty
    }
}

class DerivedClass: BaseClass {
    var derivedProperty: Int

    init(baseProperty: String, derivedProperty: Int) { // Vorgesehener Initializer
        self.derivedProperty = derivedProperty
        super.init(baseProperty: baseProperty) // Aufruf des vorgesehenen Initializers der Elternklasse
    }

    convenience init(baseProperty: String) { // Bequemer Initializer
        self.init(baseProperty: baseProperty, derivedProperty: 0) // Delegation an den eigenen vorgesehenen Initializer
    }

    convenience init() { // Bequemer Initializer
        self.init(baseProperty: "Default Base", derivedProperty: -1) // Delegation an den eigenen vorgesehenen Initializer
    }
}