Sobes.tech
Junior — Middle

Unde va fi plasată structura dacă în interiorul acesteia există un câmp care este o instanță a unei clase?

sobes.tech AI

Răspuns de la AI

În iOS, dacă o structură (struct) conține un câmp care este o instanță a unei clase (class), structura în sine este plasată pe stivă, în timp ce câmpul de clasă se află pe heap.

Acest lucru se datorează faptului că structurile sunt tipuri de valoare, care sunt stocate direct acolo unde sunt declarate (de obicei pe stivă), în timp ce clasele sunt tipuri de referință, ale căror obiecte sunt plasate pe heap, iar în structură se păstrează doar o referință la acel obiect.

Exemplu:

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

struct MyStruct {
    var obj: MyClass
}

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

Aici, s este o structură plasată pe stivă, iar obiectul MyClass(value: 10) se află pe heap, iar în s.obj se păstrează o referință la acel obiect.