Junior — Middle
Čo spôsobuje výskyt únikov pamäte v aplikáciách?
sobes.tech AI
Odpoveď od AI
Úniky pamäte v aplikáciách vznikajú, keď pamäť pridelená objektom alebo údajom nie je uvoľnená po tom, čo už nie je potrebná. V iOS je to často spojené s:
- Cykly referencií medzi objektmi (retain cykly), najmä pri použití ARC (Automatické počítanie referencií). Napríklad, keď si dva objekty navzájom odkazujú silnými referenciami, neuvoľnia sa.
- Nesprávnym použitím closure, ktoré zachytávajú self silnou referenciou.
- Neuvoľnením zdrojov, ako sú časovače, pozorovatelia alebo deskriptory súborov.
Príklad retain cycle s closure:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // self je zachytené silno, vytvára cyklus
}
}
}
Aby sa predišlo únikom, používajú sa slabé (weak) alebo ne vlastnené (unowned) referencie v closure a zabezpečuje sa správne riadenie životného cyklu objektov.