Sobes.tech
Junior — Middle

Kada yra tinkamas laikas naudoti silpną nuorodą su 'weak let'?

sobes.tech AI

Atsakymas iš AI

Silpna nuoroda su weak let Swift'e naudojama siekiant išvengti stiprių nuorodų ciklų (retention cycles), ypač užbaigiant užbaigimą ir delegatus. Ji tinkama, kai nuoroda turintis objektas gali būti deinitializuotas, ir nenorite jo laikyti atmintyje.

Pavyzdžiui, užbaigiant, kuris įtraukia self, siekiant išvengti atminties nutekėjimo, naudojama silpna nuoroda:

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

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

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

Čia weak užkerta kelią self išlaikymui užbaigiant, leidžiant ViewController būti atlaisvintam iš atminties, kai jis nebėra reikalingas.