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ů.