Назад к вопросам
Junior — Middle
73
Почему в коде с использованием замыканий рекомендуется использовать слабую ссылку на сам объект (weak self)?
Компании, где спрашивали
Doubletapp
Ответ от нейросети
sobes.tech AI
Использование слабой ссылки (weak self) в замыканиях необходимо для предотвращения циклов сильных ссылок (retain cycles), которые приводят к утечкам памяти.
Когда замыкание захватывает self как сильную ссылку, а self содержит это замыкание (например, в свойстве), они удерживают друг друга, и ни один из объектов не освобождается.
Пример использования слабой ссылки:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Здесь self захватывается слабо, поэтому если объект self будет уничтожен до выполнения замыкания, замыкание не удержит его в памяти, что предотвращает утечку.