Sobes.tech
Junior — Middle

In quale punto sarà collocata la struttura se al suo interno c'è un campo che è un'istanza di una classe?

sobes.tech AI

Risposta dell'AI

In iOS, se una struct contiene un campo che è un'istanza di una classe (class), la struct stessa viene collocata nello stack, mentre il campo di classe si trova nell'heap.

Questo perché le struct sono tipi di valore, che vengono memorizzati direttamente dove sono dichiarati (di solito nello stack), mentre le classi sono tipi di riferimento, i cui oggetti sono collocati nell'heap, e nella struct viene memorizzato solo un riferimento a quell'oggetto.

Esempio:

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

struct MyStruct {
    var obj: MyClass
}

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

Qui, s è una struct collocata nello stack, e l'oggetto MyClass(value: 10) si trova nell'heap, e in s.obj viene memorizzato un riferimento a quell'oggetto.