Junior — Middle
W jakich sytuacjach lepiej używać słabej referencji (weak var) w Swift?
sobes.tech AI
Odpowiedź od AI
Słabe odwołania (weak var) w Swift służą do zapobiegania cyklom silnych odwołań (retain cycles), które prowadzą do wycieków pamięci. Zaleca się stosowanie słabych odwołań w następujących sytuacjach:
- Gdy obiekt A odwołuje się do obiektu B, a obiekt B odwołuje się z powrotem do obiektu A, i jedno z tych odwołań powinno być słabe, aby uniknąć cyklu.
- W delegatach (delegates), gdzie delegat jest zwykle deklarowany jako weak, aby nie utrzymywać obiektu delegata w pamięci.
Przykład:
class ViewController: UIViewController {
var timer: Timer?
func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
self?.updateUI()
}
}
func updateUI() {
// aktualizacja interfejsu
}
}
Tutaj self jest przechwytywane jako słaba referencja, aby uniknąć cyklu retencji między timerem a kontrolerem.