sguruapp@gmail.com
facebook vk instagram Телеграм youtube

Что такое weak в Swift


Ключевое слово weak используется для обозначения слабой ссылки (weak reference) на объект. Это важно для предотвращения циклов сильных ссылок (retain cycles), особенно в случаях, когда два объекта ссылаются друг на друга, как, например, во взаимодействии между делегатом и делегирующим объектом.

Без weak

class SwiftCourse {
var guru: Guru?
}

class Guru {
var favCourse: SwiftCourse?
}

Если один объект удерживает другого через сильную ссылку (strong), то даже когда они больше не нужны, память не будет освобождена — происходит утечка памяти.


С weak

class SwiftCourse {
var guru: Guru?
}

class Guru {
weak var favCourse: SwiftCourse?
}

Теперь, если SwiftCourse больше не нужен, объект Guru не мешает его уничтожению, потому что favCourse — это слабая ссылка, не увеличивающая счётчик ссылок (reference count).  

Важные особенности weak:

  • Только для ссылок на объекты (классы): нельзя использовать с struct или enum.
  • Обязательно var: weak не может быть let, так как значение может обнуляться.
  • Автоматически становится nil, когда объект уничтожен.
  • Обычно имеет тип опционала (Optional), потому что может быть nil.
Индивидуальное обучение Swift начать обучение

Возврат к списку

обучись профессии будущего

Хочешь стать успешным разработчиком
приложений? Тогда добро пожаловать к нам.

обучись профессии будущего