Sobes.tech
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ą.