Sobes.tech
Junior — Middle

Millistes olukordades on eelistatav kasutada nõrka viidet (weak var) Swiftis?

sobes.tech AI

Vastus AI-lt

Swiftis kasutatakse nõrku viiteid (weak var), et vältida tugevaid viitevõrke (retain cycles), mis põhjustavad mälu lekked. Soovitatav on kasutada nõrku viiteid järgmistes olukordades:

  • Kui objekt A viitab objektile B, ja objekt B viitab tagasi objektile A, ning üks neist viidetest peaks olema nõrk, et vältida tsüklit.
  • Delegaatides (delegates), kus delegaat tavaliselt deklareeritakse kui weak, et mitte hoida delegaadi objekti mälus.

Näide:

class ViewController: UIViewController {
    var timer: Timer?

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

    func updateUI() {
        // kasutajaliidese uuendamine
    }
}

Siin on self haaratud nõrga viitena, et vältida tsüklit ajamõõtja ja kontrollija vahel.