Sobes.tech
Junior — Middle

Дар кадом ҳолатҳо истифодаи истиноди заиф (weak var) дар Swift беҳтар аст?

sobes.tech AI

Ҷавоб аз AI

Дарҳои заиф (weak var) дар Swift барои пешгирии циклҳои дарозмуддат (retain cycles) истифода мешаванд, ки ба дардҳои хотира оварда мерасонанд. Ин тавсия дода мешавад, ки дар ҳолатҳои зерин истифода шаванд:

  • Вақте ки объект A ба объект B ишора мекунад ва объект B ба объект A бармегардад, ва яке аз ин ишораҳо бояд заиф бошад, то цикл пешгирӣ шавад.
  • Дар делегатҳо (delegates), ки одатан ҳамчун weak эълон мешаванд, то объект делегат дар хотира нигоҳ дошта нашавад.

Масалан:

class ViewController: UIViewController {
    var timer: Timer?

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

    func updateUI() {
        // навсозии интерфейс
    }
}

Ин ҷо, self ҳамчун ишораи заиф гирифта мешавад, то цикл байни таймер ва контроллер пешгирӣ шавад.