Sobes.tech
Junior — Middle

U kojim situacijama je preporučljivo koristiti slabu referencu (weak var) u Swift-u?

sobes.tech АИ

Одговор од АИ

Slabe reference (weak var) u Swift-u koriste se za sprečavanje ciklusa jakih referenci (retain cycles), koji dovode do curenja memorije. Preporučuje se korišćenje slabih referenci u sledećim situacijama:

  • Kada objekat A referiše na objekat B, a objekat B se vraća na objekat A, i jedna od ovih referenci treba biti slaba da bi se izbegao ciklus.
  • Kod delegata (delegates), gde se delegat obično deklarše kao weak, da ne bi zadržavao objekat delegata u memoriji.

Primer:

class ViewController: UIViewController {
    var timer: Timer?

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

    func updateUI() {
        // ažuriranje interfejsa
    }
}

Ovde je self uhvaćen kao slaba referenca da bi se izbegao ciklus zadržavanja između tajmera i kontrolera.