Sobes.tech
Junior — Middle

Ce cauzează apariția scurgerilor de memorie în aplicații?

sobes.tech AI

Răspuns de la AI

Scurgerile de memorie în aplicații apar atunci când memoria alocată pentru obiecte sau date nu este eliberată după ce acestea nu mai sunt necesare. În iOS, acest lucru este adesea legat de:

  • Cicluri de referințe între obiecte (cicluri de retenție), în special atunci când se utilizează ARC (Contorizarea Automată a Referințelor). De exemplu, când două obiecte se referă reciproc cu referințe puternice, acestea nu sunt eliberate.
  • Utilizarea incorectă a closures, care capturează self cu o referință puternică.
  • Neluarea resurselor precum temporizatoare, observatori sau descriptorii de fișiere.

Exemplu de ciclu de retenție cu closure:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = {
            print(self) // self este capturat puternic, creând un ciclu
        }
    }
}

Pentru a evita scurgerile, se folosesc referințe slabe (weak) sau neposesate (unowned) în closures și se asigură o gestionare corectă a ciclului de viață al obiectelor.