Junior — Middle
Kur bus išdėstyta struktūra, jei joje yra laukas, kuris yra klasės pavyzdys?
sobes.tech AI
Atsakymas iš AI
iOS, jei struktūra (struct) turi lauką, kuris yra klasės (class) pavyzdys, pati struktūra yra išdėstyta steke, o klasės laukas — heap'e.
Tai yra todėl, kad struktūros yra reikšmių tipai, kurie saugomi tiesiogiai ten, kur jie deklaruojami (dažniausiai steke), o klasės yra nuorodų tipai, kurių objektai yra išdėstyti heap'e, ir struktūroje saugoma tik nuoroda į šį objektą.
Pavyzdys:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Čia s yra struktūra, išdėstyta steke, o objektas MyClass(value: 10) yra heap'e, ir s.obj saugo nuorodą į šį objektą.