Sobes.tech
Junior — Middle

Na jakém místě bude struktura umístěna, pokud uvnitř ní je pole, které je instancí třídy?

sobes.tech AI

Odpověď od AI

V iOS, pokud struktura (struct) obsahuje pole, které je instancí třídy (class), je samotná struktura umístěna na zásobníku (stack), zatímco pole třídy je umístěno na haldě (heap).

To je způsobeno tím, že struktury jsou hodnotové typy, které jsou uloženy přímo tam, kde jsou deklarovány (obvykle na zásobníku), zatímco třídy jsou referenční typy, jejichž objekty jsou umístěny na haldě, a ve struktuře je uložena pouze reference na tento objekt.

Příklad:

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

struct MyStruct {
    var obj: MyClass
}

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

Zde je s struktura umístěná na zásobníku, a objekt MyClass(value: 10) je na haldě, a v s.obj je uložena reference na tento objekt.