Sobes.tech
Junior — Middle

Mikor érdemes gyenge hivatkozást használni 'weak let'-tel?

sobes.tech MI

Válasz az MI-től

A gyenge hivatkozás weak let segítségével Swiftben megakadályozható az erős hivatkozási ciklusok (retain ciklusok), különösen zárványokban és delegáltakban. Akkor hasznos, amikor a hivatkozott objektum deinitializálható, és nem akarod megtartani a memóriában.

Például, egy olyan zárványban, amely elfogja a self-et, a memória szivárgásának elkerülése érdekében gyenge hivatkozást alkalmaznak:

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

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

    func doSomething() {
        print("Akció")
    }
}

Itt a weak megakadályozza, hogy a zárvány megtartsa a self-et, így a ViewController felszabadulhat a memóriából, amikor már nincs rá szükség.