Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : runtime, weak, unowned, performance

Почему unowned считается быстрее weak? Как это реализовано на уровне runtime?

Вопрос проверяет более глубокое понимание производительности типов ссылок и их внутренней реализации в Swift.

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

weak ссылки требуют проверки и автоматического обнуления при деинициализации объекта, что добавляет накладные расходы на хранение в таблице слабых ссылок. unowned — обычный указатель без дополнительной обработки. В runtime это отличается отсутствием регистрации в weak-таблице и лишних проверок.

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

Механика weak:

  • При создании weak переменной объект регистрируется в глобальной таблице слабых ссылок.

  • При деинициализации все связанные weak-ссылки обнуляются.

Механика unowned:

  • Это просто нерегулируемый указатель без регистрации.

  • Нет автоматической обнуления или поиска по таблице.

Накладные расходы:

  • weak: задержка при регистрациях и обнулении, синхронизация доступа к таблице.

  • unowned: прямой доступ к памяти, без лишних операций.

Реализация в runtime:

  • Таблица слабых ссылок хранится в структуре SideTable.

  • При каждом присвоении/обнулении weak код взаимодействует с этой таблицей.

  • unowned представлен просто raw pointer в объекте.

Вывод:
unowned быстрее благодаря меньшему количеству операций и отсутствию поддержки обнуления, но требует уверенности в безопасности доступа.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Swift

    Swift

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

#runtime

#weak

#unowned

#performance

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

  • Аватар

    iOS Guru

    Roman Isakov

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