Sobes.tech
Назад к вопросам
Junior — Middle
80

В каких ситуациях предпочтительнее использовать слабую ссылку (weak var) в Swift?

Компании, где спрашивали
МТСМТС

Ответ от нейросети

sobes.tech 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 захватывается слабой ссылкой, чтобы избежать retain cycle между таймером и контроллером.