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
}
}