Sobes.tech
Junior — Middle

Môžete vysvetliť, aké typy údajov predstavujú odkazy na objekty v pamäti?

sobes.tech AI

Odpoveď od AI

V iOS sú referencie na objekty v pamäti reprezentované pomocou ukazovateľov, ale s vlastnosťami závislými od typu dát a správy pamäte.

Hlavné typy referenci:

  • Silná referencia (strong reference) — štandardná referencia, ktorá udržiava objekt v pamäti. Pokiaľ existuje aspoň jedna silná referencia, objekt nebude odstránený.

  • Slabá referencia (weak reference) — neudržiava objekt v pamäti. Ak je objekt odstránený, slabá referencia sa automaticky stane nil, čím sa predchádza „visiacim“ ukazovateľom.

  • Nezávislá referencia (unowned reference) — podobná slabému, ale predpokladá, že objekt existuje počas celej doby života referencie. Ak je objekt odstránený, prístup k nezávislej referencii spôsobí pád.

Príklad v Swift:

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var strongRef: Person? = Person(name: "Alice") // silná referencia
weak var weakRef = strongRef                 // slabá referencia
unowned var unownedRef = strongRef!          // nezávislá referencia

strongRef = nil // objekt bude odstránený, weakRef sa stane nil, unownedRef bude neplatný

Týmto spôsobom pomáhajú typy referencií riadiť životnosť objektov a predchádzať únikom pamäti a cyklickým referenciám.