Middle
Co wiesz o liście przechwytującej w Swift?
sobes.tech AI
Odpowiedź od AI
W Swift lista przechwytywania jest używana w zamknięciach do zarządzania przechwytywaniem zmiennych z otaczającego kontekstu, szczególnie aby uniknąć cykli silnych odniesień (retain cycles).
Lista przechwytywania jest zapisywana w nawiasach kwadratowych przed ciałem zamknięcia i pozwala określić, jak zmienne będą przechwytywane — przez silne odniesienie (strong), słabe (weak) lub bez właściciela (unowned).
Przykład:
class ViewController {
var name = "Swift"
lazy var closure: () -> Void = { [weak self] in
guard let self = self else { return }
print(self.name)
}
}
Tutaj [weak self] zapobiega utrzymaniu silnego odniesienia do self wewnątrz zamknięcia, co pomaga uniknąć wycieków pamięci.
W związku z tym lista przechwytywania jest narzędziem do kontroli cyklu życia obiektów przechwytywanych przez zamknięcie.