Sobes.tech
Junior — Middle

Puteți explica ce înseamnă utilizarea unei referințe slabe la self în closures?

sobes.tech AI

Răspuns de la AI

Utilizarea unei referințe slabe (weak reference) la self în closures în iOS (Swift) ajută la evitarea ciclurilor de retenție (retain cycles), care duc la scurgeri de memorie. Când un closure capturează self ca referință puternică, și self conține acel closure, ele se mențin reciproc, iar memoria nu este eliberată.

Exemplu:

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

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

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

Aici, [weak self] înseamnă că în interiorul closure-ului, self va fi o referință slabă, și dacă obiectul este distrus, referința va deveni nil, prevenind scurgerile de memorie.