Sobes.tech
Back to questions
Junior — Middle
69

Какую роль выполняет ключевое слово self внутри замыканий?

Answer from AI

sobes.tech AI

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

Это важно, чтобы избежать циклов сильных ссылок (retain cycles), которые могут привести к утечкам памяти. В замыканиях, которые захватывают self, часто используют захват self как слабую ([weak self]) или безусловно слабую ([unowned self]) ссылку.

Пример:

class ViewController {
    var name = "Main"

    func doSomething() {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) { [weak self] in
            guard let self = self else { return }
            print(self.name) // здесь self используется явно
        }
    }
}

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