Sobes.tech
Back to questions
Junior — Middle
84

Можете объяснить, что означает использование слабой ссылки на self в замыканиях?

Answer from AI

sobes.tech AI

Использование слабой ссылки (weak reference) на self в замыканиях в iOS (Swift) помогает избежать циклов удержания (retain cycles), которые приводят к утечкам памяти. Когда замыкание захватывает self как сильную ссылку, и self содержит это замыкание, они удерживают друг друга, и память не освобождается.

Пример:

class MyClass {
    var closure: (() -> Void)?

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

    func doSomething() {
        print("Action")
    }
}

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