Карточка Junior Замыкания и захват спрашивают часто обновлено

Паттерн weak self в замыкании

Вопрос

Как правильно захватить self в completion-обработчике, чтобы не было цикла?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

{ [weak self] result in guard let self else { return } ... }. С Swift 5.7 можно писать коротко guard let self.

Ответ

{ [weak self] result in guard let self else { return } ... }. С Swift 5.7 можно писать коротко guard let self.

Разбор

Если объект уже освобождён, замыкание просто выйдет. [unowned self] только когда объект гарантированно живёт дольше замыкания.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.