Junior — Middle
Hol lesz elhelyezve a szerkezet, ha benne van egy mező, amely egy osztály példánya?
sobes.tech MI
Válasz az MI-től
iOS-ben, ha egy struktúra (struct) tartalmaz egy osztály (class) példányát, akkor maga a struktúra a veremben (stack) helyezkedik el, míg az osztály mezője a halomban (heap).
Ez azért van, mert a struktúrák érték típusok, amelyek közvetlenül ott tárolódnak, ahol deklarálva vannak (általában a veremben), míg az osztályok referencia típusok, amelyek objektumai a halomban helyezkednek el, és a struktúrában csak egy referencia van ezekhez az objektumokhoz.
Példa:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Itt az s egy struktúra, amely a veremben van, az MyClass(value: 10) objektum pedig a halomban, és az s.obj csak egy referencia erre az objektumra.