Назад к вопросам
DNS
Avito
Junior — Middle
66
Что такое потеря выделенной памяти и как она может возникнуть в приложении?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Потеря выделенной памяти (memory leak) в iOS-приложении — это ситуация, когда приложение продолжает удерживать ссылки на объекты, которые больше не нужны, из-за чего память не освобождается и со временем расходуется всё больше ресурсов.
Причины возникновения:
- Циклические ссылки (retain cycles) между объектами, особенно при использовании ARC (Automatic Reference Counting).
- Использование замыканий (closures) с захватом self без слабых ссылок (weak/self).
- Неправильное управление ресурсами, например, неосвобождение делегатов.
Пример retain cycle с замыканием:
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) помогает выявлять и устранять утечки памяти.