Sobes.tech
Junior — Middle

Kādās situācijās ir vēlams izmantot vāju atsauci (weak var) Swift?

sobes.tech AI

Atbilde no AI

Vāji atsauces (weak var) Swift tiek izmantotas, lai novērstu stipro atsauču ciklus (retain cycles), kas noved pie atmiņas noplūdēm. Ieteicams izmantot vājas atsauces šādās situācijās:

  • Kad objekts A atsaucas uz objektu B, un objekts B atsaucas atpakaļ uz objektu A, un viena no šīm atsaucēm ir jābūt vājas, lai novērstu ciklu.
  • Delegātos (delegates), kur delegāts parasti tiek deklarēts kā weak, lai nesaglabātu delegāta objektu atmiņā.

Piemērs:

class ViewController: UIViewController {
    var timer: Timer?

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

    func updateUI() {
        // lietotāja saskarnes atjaunināšana
    }
}

Šeit self tiek noķerts kā vāja atsauce, lai novērstu ciklu starp taimeri un kontrolieri.