Sobes.tech
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.