Sobes.tech
Junior — Middle

Poți explica ce tipuri de scurgeri de memorie există în aplicații?

sobes.tech AI

Răspuns de la AI

În aplicațiile iOS, principalele tipuri de scurgeri de memorie sunt legate de gestionarea incorectă a referințelor la obiecte:

  • Cicluri de referință puternice (Strong Reference Cycles) — atunci când două obiecte au referințe puternice unul către celălalt și niciunul nu poate fi eliberat.
  • Scurgeri cauzate de closures (Closures) — dacă o closure capturează self cu o referință puternică, acest lucru poate duce la un ciclu de referință.
  • Resurse neeliberate — obiecte care nu sunt eliberate din cauza lipsei apelului deinit sau utilizării incorecte.

Exemplu de ciclu de referință puternic:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // ciclu de referință puternic

Pentru a evita acest lucru, se folosesc referințe slabe (weak) sau neuniversal (unowned).