Junior — Middle
Mikor mondhatjuk, hogy egy objektum vagy szerkezet nincs a memória veremben?
sobes.tech MI
Válasz az MI-től
Egy objektum vagy szerkezet nem a memória veremben (stack) helyezkedik el, ha dinamikusan foglalják le vagy olyan hosszú életű, hogy meghaladja a függvény végrehajtási idejét.
iOS-ben (és általában Swift/Objective-C-ben):
- A helyi változók és szerkezetek általában a veremben (stack) helyezkednek el.
- A osztályobjektumok (referenciatípusok) a heap-en (kupac) vannak lefoglalva, és a veremben csak egy hivatkozás tárolódik rájuk.
- Ha egy objektumot
alloc/init-tel Objective-C-ben vagyclass-szal Swift-ben hoznak létre, akkor a heap-en helyezkedik el.
Swift példával:
func példa() {
let helyiSzerkezet = MyStruct() // a veremben
let objektum = MyClass() // az objektum a heap-en, a hivatkozás a veremben
}
Tehát, ha egy változó egy osztályobjektumra mutató hivatkozás, akkor maga az objektum kívül van a veremben, a heap-en.