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