Sobes.tech
Junior — Middle

Къде ще бъде разположена структурата, ако вътре има поле, което е екземпляр на клас?

sobes.tech AI

Отговор от AI

В iOS, ако структура (struct) съдържа поле, което е екземпляр на клас (class), самата структура се разполага в стека, а полето-клас — в купчината.

Това е свързано с факта, че структурите са типове стойности, които се съхраняват директно там, където са обявени (обикновено в стека), а класовете — референтни типове, чиито обекти се разполагат в купчината, а в структурата се съхранява само препратка към този обект.

Пример:

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

struct MyStruct {
    var obj: MyClass
}

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

Тук s е структура, разположена в стека, а обектът MyClass(value: 10) — в купчината, а в s.obj се съхранява препратка към този обект.