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