Value Type и Reference Type или чем стек отличается от кучи?

Итак, разберемся что такое Value Type и Reference Type и чем стек отличается от кучи.
В Swift есть две категории типов:

  • Value Type (Тип значения) — каждый экземпляр хранит уникальную копию своих данных. То есть происходит создание нового экземпляра (копии) при присвоении значения переменной/константе или при передаче экземпляра в функцию.
  • Reference Type (Ссылочный тип) — каждый экземпляр использует одну копию данных. То есть сохраняется/возвращается ссылка на тот же экземпляр при присвоении значения переменной/константе или при передаче экземпляра в функцию.

Давайте разделим типы в Swift на две категории:

Тип значенияСсылочный тип
IntФункции
DoubleЗамыкания
StringКлассы
Array
Dictionary
Set
Struct
Enum
Tuple

  • Экземпляры ссылочного типа (Reference Type), например, функции или классы хранятся в управляемой динамической памяти — куче (heap).
  • Экземпляры типа значения (Value Type), такие, как структура или массив, находятся в области памяти, называемой стеком (stack).

Существует одно важное замечание — если экземпляр типа значения является частью экземпляра ссылочного типа, то значение сохраняется в куче вместе с экземпляром ссылочного типа. Например, структура сама по себе хранится в стеке, но если эта структура расположена в классе, то так как класс хранится в куче, то и структура будет сохранена в куче.

Стек используется для распределения статической памяти, а куча — для распределения динамической памяти, которая хранятся в оперативной памяти компьютера.

Больше информации:

Выразить благодарность или найти уникальный материал вы можете в boosty.

Подписывайтесь на мой Telegram-канал iOS Interview Channel, чтобы не пропустить новый материал.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *