Sobes.tech
Junior — Middle

W jakiej kolejności wykonywane są konstruktory i inicjalizatory podczas tworzenia instancji klasy?

sobes.tech AI

Odpowiedź od AI

Podczas tworzenia instancji klasy w iOS (np. w Swift) kolejność wykonywania jest następująca:

  1. Najpierw wykonywane są inicjalizatory wszystkich właściwości zadeklarowanych w klasie (jeśli mają wartości domyślne).
  2. Następnie wywoływany jest konstruktor (inicjalizator) samej klasy.
  3. Jeśli klasa dziedziczy, najpierw wywoływane są inicjalizatory klasy nadrzędnej, a potem klasy podrzędnej.

Przykład w Swift:

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

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // najpierw inicjalizator klasy nadrzędnej
        print("Child init")
    }
}

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

W związku z tym, najpierw inicjalizowane są właściwości, następnie wywoływany jest inicjalizator klasy nadrzędnej, a potem klasy podrzędnej.