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.