Sobes.tech
Junior — Middle

Warum wird empfohlen, in Code mit Closures eine schwache Referenz auf das Objekt selbst (weak self) zu verwenden?

sobes.tech KI

Antwort von AI

Die Verwendung von schwachen Referenzen (weak self) in Closures ist notwendig, um starke Referenzzyklen (Retain Cycles) zu verhindern, die zu Speicherlecks führen.

Wenn ein Closure self als starke Referenz erfasst, und self dieses Closure enthält (z.B. in einer Eigenschaft), halten sie sich gegenseitig fest, und keines der Objekte wird freigegeben.

Beispiel für die Verwendung einer schwachen Referenz:

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

Hier wird self schwach erfasst, sodass, wenn das Objekt self vor der Ausführung des Closures zerstört wird, das Closure es nicht im Speicher hält, was einen Speicherverlust verhindert.