Sobes.tech
Junior — Middle

À quel endroit la structure sera-t-elle placée si elle contient un champ qui est une instance d'une classe?

sobes.tech IA

Réponse de l'IA

En iOS, si une structure (struct) contient un champ qui est une instance d’une classe (class), la structure elle-même est placée sur la pile, tandis que le champ de classe est placé sur le tas.

Cela est dû au fait que les structures sont des types de valeur, stockés directement là où elles sont déclarées (généralement sur la pile), tandis que les classes sont des types de référence, dont les objets sont placés sur le tas, et la structure ne stocke qu’une référence à cet objet.

Exemple:

class MyClass {
    var value: Int
    init(value: Int) {
        self.value = value
    }
}

struct MyStruct {
    var obj: MyClass
}

var s = MyStruct(obj: MyClass(value: 10))

Ici, s est une structure placée sur la pile, et l’objet MyClass(value: 10) est sur le tas, et dans s.obj est stockée une référence à cet objet.