Middle
Was wissen Sie über die Capture-Liste in Swift?
sobes.tech KI
Antwort von AI
In Swift wird die Capture-Liste in Closures verwendet, um die Erfassung von Variablen aus dem umgebenden Kontext zu steuern, insbesondere um starke Referenzzyklen (Retain Cycles) zu vermeiden.
Die Capture-Liste wird in eckigen Klammern vor dem Körper des Closures geschrieben und ermöglicht die Angabe, wie Variablen erfasst werden — durch starke Referenz (strong), schwach (weak) oder ohne Eigentümer (unowned).
Beispiel:
class ViewController {
var name = "Swift"
lazy var closure: () -> Void = { [weak self] in
guard let self = self else { return }
print(self.name)
}
}
Hier verhindert [weak self], dass eine starke Referenz auf self innerhalb des Closures gehalten wird, was hilft, Speicherlecks zu vermeiden.
Daher ist die Capture-Liste ein Werkzeug zur Steuerung des Lebenszyklus der vom Closure erfassten Objekte.