Sobes.tech
Junior — Middle

In quale ordine vengono eseguiti i costruttori e gli inizializzatori durante la creazione di un'istanza di una classe?

sobes.tech AI

Risposta dell'AI

Quando si crea un'istanza di una classe in iOS (ad esempio, in Swift), l'ordine di esecuzione è il seguente:

  1. Prima vengono eseguiti gli inizializzatori di tutte le proprietà dichiarate nella classe (se hanno valori predefiniti).
  2. Poi viene chiamato il costruttore (inizializzatore) della classe stessa.
  3. Se la classe eredita da un'altra, prima vengono chiamati gli inizializzatori della superclasse, poi quelli della sottoclasse.

Esempio in Swift:

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

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // prima l'inizializzatore della superclasse
        print("Child init")
    }
}

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

Pertanto, prima vengono inizializzate le proprietà, poi viene chiamato l'inizializzatore della superclasse, seguito da quello della sottoclasse.