Sobes.tech
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.