Middle
Care este diferența dintre convenții și desemnat?
sobes.tech AI
Răspuns de la AI
Inițializatoarele de conveniență sunt secundare, ele pot apela doar alte inițializatoare din aceeași clasă, delegând în cele din urmă apelul către inițializatorul desemnat. Sunt folosite pentru a adăuga moduri convenabile de a crea instanțe.
Inițializatoarele desemnate sunt principale, asigură inițializarea completă a tuturor proprietăților stocate ale clasei (ale sale și ale părintelui). Ele pot apela inițializatoare desemnate ale clasei părinte. Fiecare clasă trebuie să aibă cel puțin un inițializator desemnat.
class BaseClass {
var baseProperty: String
init(baseProperty: String) { // Inițializator desemnat
self.baseProperty = baseProperty
}
}
class DerivedClass: BaseClass {
var derivedProperty: Int
init(baseProperty: String, derivedProperty: Int) { // Inițializator desemnat
self.derivedProperty = derivedProperty
super.init(baseProperty: baseProperty) // Apel la inițializatorul desemnat al părintelui
}
convenience init(baseProperty: String) { // Inițializator de conveniență
self.init(baseProperty: baseProperty, derivedProperty: 0) // Delegare la propriul inițializator desemnat
}
convenience init() { // Inițializator de conveniență
self.init(baseProperty: "Default Base", derivedProperty: -1) // Delegare la propriul inițializator desemnat
}
}