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.