Sobes.tech
Back to questions
Junior — Middle
72

Почему в коде с использованием замыканий рекомендуется использовать слабую ссылку на сам объект (weak self)?

Companies where asked
Doubletapp

Answer from AI

sobes.tech AI

Использование слабой ссылки (weak self) в замыканиях необходимо для предотвращения циклов сильных ссылок (retain cycles), которые приводят к утечкам памяти.

Когда замыкание захватывает self как сильную ссылку, а self содержит это замыкание (например, в свойстве), они удерживают друг друга, и ни один из объектов не освобождается.

Пример использования слабой ссылки:

someAsyncCall { [weak self] in
    guard let self = self else { return }
    self.doSomething()
}

Здесь self захватывается слабо, поэтому если объект self будет уничтожен до выполнения замыкания, замыкание не удержит его в памяти, что предотвращает утечку.