Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : weak, reference

Почему weak является optional, а unowned — нет?

Вопрос проверяет понимание работы ARC и гарантий жизненного цикла объектов.

Короткий ответ

weak ссылка может стать nil, если объект был освобожден. Поэтому она обязана быть optional. unowned предполагает, что объект всегда существует в момент обращения. Если объект будет освобожден раньше, приложение упадет. Это принципиальная разница в контракте использования.

Длинный ответ

Разница между weak и unowned отражает разные гарантии времени жизни объектов.

Поведение weak

weak ссылка безопасна.

  • ARC автоматически обнуляет ссылку

  • Объект может быть освобожден в любой момент

  • Код обязан учитывать nil

weak var owner: Owner?

Поведение unowned

unowned ссылка небезопасна.

  • ARC не обнуляет ссылку

  • Ожидается, что объект всегда жив

  • Нарушение ожиданий приводит к крэшу

unowned let coordinator: Coordinator

Когда использовать каждый вариант

  • weak — делегаты, замыкания, UI

  • unowned — parent-child отношения с жестким контрактом

Вывод

Optional у weak — это защита от обращения к освобожденному объекту. unowned жертвует безопасностью ради удобства, поэтому требует строгих гарантий.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Swift

    Swift

Ключевые слова

#weak

#reference

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.