Junior — Middle
Op welke plek wordt de structuur geplaatst als er binnenin een veld is dat een instantie van een klasse is?
sobes.tech AI
Antwoord van AI
In iOS, als een struct een veld bevat dat een instantie van een class is, wordt de struct zelf op de stack geplaatst, terwijl het class-veld op de heap ligt.
Dit komt doordat structs waarde-types zijn die direct worden opgeslagen waar ze zijn gedeclareerd (meestal op de stack), terwijl classes referentie-types zijn waarvan de objecten op de heap worden geplaatst, en in de struct wordt alleen een verwijzing naar dat object opgeslagen.
Voorbeeld:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Hier is s een structuur die op de stack ligt, en het object MyClass(value: 10) bevindt zich op de heap, en in s.obj wordt een verwijzing naar dat object opgeslagen.