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.