AR C не применяется к struct и enum, как они освобождаются в Swift - PullRequest
0 голосов
/ 07 февраля 2020

Поскольку AR C не применяется к struct и enum, то как они освобождаются из памяти? Я должен застрять, когда он спросил об этом в интервью, и попытаться найти правильный ответ, но не могу найти много информации по этому поиску. Я знаю, что Swift умен в обработке типов значений. Но как?

1 Ответ

2 голосов
/ 07 февраля 2020

Управление памятью объектов (экземпляров классов) является относительно сложным, поскольку объекты могут пережить вызов функции, жизнь других объектов или даже жизнь потоков, которые их выделили. Они являются независимыми объектами в куче, которые нуждаются в бухгалтерском учете, чтобы убедиться, что они освобождены, когда они больше не нужны (когда на них больше нет ссылок из каких-либо других потоков / объектов, они недоступны, таким образом невозможно 10000 *, поэтому безопасно удалить).

С другой стороны, структуры и перечисления просто хранят свои экземпляры встроенными. Если они объявлены как локальные переменные, они размещаются в стеке. Если они размещены как свойство другого объекта, они просто хранятся непосредственно внутри этого объекта. Они удаляются только благодаря тому, что их содержащийся контекст освобождается, например, когда функция возвращается или когда объект освобождается.

...