Junior — Middle
Na akom mieste bude štruktúra umiestnená, ak v nej je pole, ktoré je inštanciou triedy?
sobes.tech AI
Odpoveď od AI
V iOS, ak štruktúra (struct) obsahuje pole, ktoré je inštanciou triedy (class), samotná štruktúra je umiestnená na zásobníku (stack), zatiaľ čo pole triedy je umiestnené na halde (heap).
Toto je spôsobené tým, že štruktúry sú hodnotové typy, ktoré sa ukladajú priamo tam, kde sú deklarované (zvyčajne na zásobníku), zatiaľ čo triedy sú referenčné typy, ktorých objekty sú umiestnené na halde, a v štruktúre sa uchováva iba referencia na tento objekt.
Príklad:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Tu je s štruktúra umiestnená na zásobníku, a objekt MyClass(value: 10) je na halde, a v s.obj je uložená referencia na tento objekt.