Sobes.tech
Junior — Middle

Milyen sorrendben hajtódnak végre a konstruktorok és az inicializálók osztálypéldány létrehozásakor?

sobes.tech MI

Válasz az MI-től

Amikor egy osztály példányát hozzuk létre iOS-ben (például Swift-ben), a végrehajtási sorrend a következő:

  1. Először minden, az osztályban deklarált tulajdonság inicializálója (ha van alapértelmezett értéke) fut le.
  2. Ezután meghívásra kerül az osztály saját konstruktorja (initializálója).
  3. Ha az osztály öröklődik, először a szuperosztály inicializálói futnak le, majd az alosztályé.

Példa Swift-ben:

class Parent {
    var name: String = "Parent"
    init() {
        print("Parent init")
    }
}

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // először a szuperosztály inicializálója
        print("Child init")
    }
}

let c = Child()
// Kimenet:
// Parent init
// Child init

Így először a tulajdonságok inicializálódnak, majd a szuperosztály inicializálója hívódik meg, utána az alosztályé.