Sobes.tech
Junior — Middle

Ar gali paaiškinti, kokie yra atminties nutekėjimo tipai programose?

sobes.tech AI

Atsakymas iš AI

iOS programose pagrindiniai atminties nutekėjimo tipai yra susiję su netinkamu nuorodų valdymu į objektus:

  • Stiprios nuorodų ciklai (Strong Reference Cycles) — kai du objektai turi stiprias nuorodas vienas į kitą ir nė vienas negali būti laisvas.
  • Nutekėjimai dėl užkadrų (Closures) — jei užkadrą įsikibęs self su stipria nuoroda, tai gali sukelti ciklą.
  • Nepaleisti išteklių — objektai, kurie nėra paleisti dėl deinit iškvietimo trūkumo arba netinkamo naudojimo.

Pavyzdys stipraus nuorodų ciklo:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // stiprus nuorodų ciklas

Norint to išvengti, naudojamos silpnos (weak) arba neįgaliotos (unowned) nuorodos.