Sobes.tech
Junior — Middle

Kiedy jest odpowiednie użycie słabej referencji za pomocą 'weak let'?

sobes.tech AI

Odpowiedź od AI

Słaba referencja za pomocą weak let w Swift jest używana do zapobiegania cyklom silnych referencji (cykle zatrzymania), szczególnie w zamknięciach i delegatach. Jest odpowiednia, gdy obiekt, na który się odwołujesz, może zostać zdezinitializowany, i nie chcesz go trzymać w pamięci.

Na przykład, w zamknięciu, które przechwytuje self, aby uniknąć wycieków pamięci, stosuje się słabą referencję:

class ViewController {
    var closure: (() -> Void)?

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

    func doSomething() {
        print("Akcja")
    }
}

Tutaj weak zapobiega zatrzymaniu self przez zamknięcie, co pozwala ViewController na zwolnienie z pamięci, gdy nie jest już potrzebny.