Middle
Mis vahe on conventions ja designated vahel?
sobes.tech AI
Vastus AI-lt
Kohandamis-initializers on teisejärgulised, nad saavad kutsuda ainult teisi sama klassi initialiseerijaid ning lõpuks delegeerivad kutsumise määratud initialiseerijale. Nad on kasulikud viisid mugavalt eksemplare luua.
Määratud initialiseerijad on põhilised, nad tagavad kõigi klassi salvestatud omaduste täieliku initsialiseerimise (oma ja vanemate omadused). Nad saavad kutsuda vanemate määratud initialiseerijaid. Igal klassil peab olema vähemalt üks määratud initialiseerija.
class BaseClass {
var baseProperty: String
init(baseProperty: String) { // Määratud initialiseerija
self.baseProperty = baseProperty
}
}
class DerivedClass: BaseClass {
var derivedProperty: Int
init(baseProperty: String, derivedProperty: Int) { // Määratud initialiseerija
self.derivedProperty = derivedProperty
super.init(baseProperty: baseProperty) // Vanemate määratud initialiseerija kutsumine
}
convenience init(baseProperty: String) { // Mugavus-initializer
self.init(baseProperty: baseProperty, derivedProperty: 0) // Delegatsioon oma määratud initialiseerijale
}
convenience init() { // Mugavus-initializer
self.init(baseProperty: "Default Base", derivedProperty: -1) // Delegatsioon oma määratud initialiseerijale
}
}