Junior — Middle
Ce este pierderea de memorie alocată și cum poate apărea într-o aplicație?
sobes.tech AI
Răspuns de la AI
Pierdere de memorie (memory leak) într-o aplicație iOS este o situație în care aplicația continuă să păstreze referințe la obiecte care nu mai sunt necesare, ceea ce împiedică eliberarea memoriei și, în timp, consumă tot mai multe resurse.
Cauze:
- Cicluri de referințe (retain cycles) între obiecte, mai ales când se folosește ARC (Contorizare automată a referințelor).
- Utilizarea de closures cu captură de self fără referințe slabe (weak/self).
- Gestionarea incorectă a resurselor, de exemplu, neeliberarea delegaților.
Exemplu de ciclu de retenție cu closure:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // captură de self fără weak
}
}
}
Pentru a evita, trebuie folosit [weak self]:
closure = { [weak self] in
guard let self = self else { return }
print(self)
}
Analiza regulată cu instrumentele Xcode (Instruments — Leaks) ajută la identificarea și eliminarea scurgerilor de memorie.