Sobes.tech
Junior — Middle

Vai vari izskaidrot, kādi ir atmiņas noplūdes veidi programmās?

sobes.tech AI

Atbilde no AI

iOS lietojumprogrammās galvenie atmiņas noplūdes veidi ir saistīti ar nepareizu atsauces pārvaldību uz objektiem:

  • Spēcīgi atsauces cikli (Strong Reference Cycles) — kad divi objekti ir stipri saistīti viens ar otru, un neviens no tiem nevar tikt atbrīvots.
  • Noplūdes, ko izraisa aizkaves (Closures) — ja aizkave aizķer self ar stipru atsauci, tas var novest pie cikla.
  • Nepilnīgi resursi — objekti, kas netiek atbrīvoti, jo nav izsaukts deinit vai tiek izmantots nepareizi.

Piemērs spēcīgam atsauces ciklam:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // spēcīgs atsauces cikls

Lai izvairītos no tā, tiek izmantotas vājas (weak) vai neuzskatītas (unowned) atsauces.