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.