Sobes.tech
Junior — Middle

Kokiose situacijose yra pageidautina naudoti silpną nuorodą (weak var) Swift?

sobes.tech AI

Atsakymas iš AI

Silpnos nuorodos (weak var) Swift naudojamos siekiant išvengti stipriųjų nuorodų ciklų (retain cycles), kurie sukelia atminties nutekėjimą. Rekomenduojama naudoti silpnąsias nuorodas šiose situacijose:

  • Kai objektas A nurodo į objektą B, ir objektas B nurodo atgal į objektą A, ir viena iš šių nuorodų turi būti silpna, kad išvengtume ciklo.
  • Delegatuose (delegates), kur delegatas paprastai deklaruojamas kaip weak, kad nesulaikytų delegato objekto atmintyje.

Pavyzdys:

class ViewController: UIViewController {
    var timer: Timer?

    func startTimer() {
        timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
            self?.updateUI()
        }
    }

    func updateUI() {
        // naudotojo sąsajos atnaujinimas
    }
}

Čia self yra įrašomas kaip silpna nuoroda, siekiant išvengti ciklo tarp laikmačio ir valdiklio.