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.