Junior — Middle
Kas ir piešķirtās atmiņas zudums un kā tas var rasties lietojumprogrammā?
sobes.tech AI
Atbilde no AI
Atmiņas noplūde (memory leak) iOS lietotnē ir situācija, kad lietotne turpina turēt atsauces uz objektiem, kas vairs nav nepieciešami, tādējādi neatbrīvojot atmiņu, un laika gaitā resursu patēriņš palielinās.
Iemesli:
- Cikliski atsauces (retain cycles) starp objektiem, īpaši izmantojot ARC (Automātiskā atsauču skaitīšana).
- Closure izmantošana ar self noķeršanu bez vājām atsaucēm (weak/self).
- Nepareiza resursu pārvaldība, piemēram, deleģentu neatbrīvošana.
Piemērs ar retain cycle un closure:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // self noķeršana bez weak
}
}
}
Lai izvairītos, jāizmanto [weak self]:
closure = { [weak self] in
guard let self = self else { return }
print(self)
}
Regulāra analīze ar Xcode rīkiem (Instruments — Leaks) palīdz atklāt un novērst atmiņas noplūdes.