> Что такое сайд таблица (side table) в контексте weak ссылок и как она работает (iOS, Swift)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: Bip.ru

Стек: iOS, Swift

> Пример ответа

Сайд таблица (side table) - это дополнительная структура данных, которую Objective-C runtime создает для объекта, когда на него начинают ссылаться weak-ссылки или когда у объекта есть ассоциированные объекты (associated objects). В контексте weak-ссылок сайд таблица хранит информацию о всех слабых указателях, указывающих на данный объект.

Как это работает:

  1. Когда вы создаете weak-ссылку на объект, runtime проверяет, существует ли уже сайд таблица для этого объекта. Если нет - создается новая.
  2. Сайд таблица содержит хеш-таблицу (или массив) слабых ссылок, которые указывают на объект.
  3. Когда объект деаллоцируется (вызывается dealloc), runtime находит его сайд таблицу, обнуляет все слабые ссылки (устанавливает их в nil) и затем удаляет сайд таблицу.
  4. Это гарантирует, что weak-ссылки никогда не станут висячими указателями (dangling pointers).

В Swift этот механизм реализован поверх Objective-C runtime для классов, наследующих от NSObject. Для чистых Swift-классов используется аналогичная логика, но с собственной реализацией управления памятью (Swift runtime). Сайд таблица - ключевой элемент для безопасной работы weak-ссылок, так как она централизованно отслеживает все слабые указатели на объект.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью