Sobes.tech
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.