Назад к вопросам
Junior — Middle
77
Должен ли я добавлять weak self в список захвата для каждого замыкания в Swift?
Ответ от нейросети
sobes.tech AI
Не обязательно добавлять weak self в список захвата для каждого замыкания в Swift. Использование weak self нужно тогда, когда замыкание захватывает self и может привести к циклической сильной ссылке (retain cycle), например, если замыкание хранится в свойстве объекта или выполняется асинхронно и удерживает self дольше, чем нужно.
Если замыкание используется локально и не сохраняется, или не вызывает циклических ссылок, то можно не использовать weak self.
Пример с использованием weak self для предотвращения retain cycle:
class ViewController: UIViewController {
var completionHandler: (() -> Void)?
func setup() {
completionHandler = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Action performed")
}
}
Если self не использовать в замыкании или замыкание не сохраняется, weak self не нужен.