Sobes.tech
Junior

Co je to únik paměti a jak k němu dochází?

sobes.tech AI

Odpověď od AI

Únik paměti je situace, kdy program alokuje paměť pro objekty, ale poté, co již nejsou potřeba, odkazy na ně nejsou odstraněny a sběrač odpadu nemůže tuto paměť uvolnit. V iOS, kde se používá ARC (Automatické počítání odkazů), k únikům paměti často dochází kvůli cyklickým odkazům, například když si dva objekty navzájem odkazují pomocí silných odkazů a žádný z nich není uvolněn.

Příklad cyklického odkazu ve Swift:

class A {
    var b: B?
}

class B {
    var a: A?
}

let a = A()
let b = B()

a.b = b
b.a = a
// Oba objekty se odkazují navzájem, ARC je nemůže automaticky uvolnit

Aby se předešlo únikům, používají se slabé (weak) nebo bez vlastnictví (unowned) odkazy, které nezvyšují čítač odkazů a umožňují správné uvolnění objektů.