Junior — Middle
Можеш ли да објасниш који типови цурења меморије постоје у апликацијама?
sobes.tech АИ
Одговор од АИ
U iOS aplikacijama, glavni tipovi curenja memorije povezani su s netočnim upravljanjem referencama na objekte:
- Snažni ciklusi referenci (Strong Reference Cycles) — kada dva objekta imaju snažne reference jedno na drugo i nijedan od njih ne može biti oslobođen.
- Curjenja zbog zatvaranja (Closures) — ako zatvaranje uhvati self snažnom referencom, to može dovesti do ciklusa referenci.
- Neosloboženi resursi — objekti koji se ne oslobađaju zbog nedostatka poziva na deinit ili pogrešne uporabe.
Primjer snažnog ciklusa referenci:
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // snažni ciklus referenci
Da bi se to spriječilo, koriste se slabe (weak) ili neovisne (unowned) reference.