Junior — Middle
Какво е загуба на отделена памет и как може да възникне в приложение?
sobes.tech AI
Отговор от AI
Загуба на памет (memory leak) в iOS приложение е ситуация, при която приложението продължава да държи препратки към обекти, които вече не са необходими, поради което паметта не се освобождава и с времето се изразходват все повече ресурси.
Причини:
- Циклични препратки (retain cycles) между обекти, особено при използване на ARC (Автоматично преброяване на препратките).
- Използване на closures с улавяне на self без слаби препратки (weak/self).
- Неправилно управление на ресурсите, например, непускане на делегати.
Пример за retain cycle с closure:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // улавяне на self без weak
}
}
}
За да се избегне, трябва да се използва [weak self]:
closure = { [weak self] in
guard let self = self else { return }
print(self)
}
Редовният анализ с помощта на инструментите на Xcode (Instruments — Leaks) помага за откриване и отстраняване на течове на памет.