Junior — Middle
Unter welchen Umständen sollte man eine schwache Referenz (weak) innerhalb einer Closure verwenden?
sobes.tech KI
Antwort von AI
Schwache Referenzen (weak) innerhalb von Closures in iOS werden verwendet, um starke Referenzzyklen (retain cycles) zu verhindern, die zu Speicherlecks führen können. Dies ist in der Regel relevant, wenn ein Closure ein Objekt (z.B. self) erfasst und von diesem Objekt gehalten wird, was eine gegenseitige starke Referenz schafft.
Verwenden Sie weak, um auf self innerhalb des Closures zu verweisen, wenn das Closure in einer Eigenschaft des Objekts gespeichert wird oder länger leben kann als der Funktionsaufruf, um zu vermeiden, dass das Objekt nach der Freigabe im Speicher gehalten wird.
Beispiel in Swift:
class ViewController {
var completion: (() -> Void)?
func setup() {
completion = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Aktion ausgeführt")
}
}
Hier verhindert [weak self] einen starken Zyklus zwischen ViewController und dem Closure completion.