Sobes.tech
Junior — Middle

В кои ситуации е по-добре да използвате слаба препратка (weak var) в Swift?

sobes.tech AI

Отговор от AI

Слабите препратки (weak var) в Swift се използват за предотвратяване на цикли на силни препратки (retain cycles), които водят до течове на памет. Препоръчително е да се използват слабите препратки в следните ситуации:

  • Когато обект A препраща към обект B, а обект B препраща обратно към обект A, и една от тези препратки трябва да бъде слаб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 се улавя като слаб препратка, за да се избегне цикълът на задържане между таймера и контролера.