Может ли Swift Struct размещаться в куче, когда это сохраненное свойство? - PullRequest
0 голосов
/ 24 января 2019

Одна из замечательных особенностей структур состоит в том, что они размещаются в стеке, что делает их действительно быстрыми.

Однако экземпляр класса и его свойства размещаются в куче.Так не будет ли свойство, являющееся структурой, выделяться и в куче?

1 Ответ

0 голосов
/ 24 января 2019

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

Вообще говоря, типы значений Swift размещаются в той области памяти, где их ссылка существует:

  • локальные переменные обычно попадают в стек [1]
  • переменные, захваченные экранирующими замыканиями, должны жить в куче, в противном случае к моменту выполнения замыкания стек может быть использован для чего-то другого
  • свойства экземпляра распределяются в куче вместе с остальными свойствами
  • глобальные переменные и классы / статические члены, ну, они получают другое обращение, потому что они ленивы: https://railsware.com/blog/2014/06/11/global-variables-in-swift-are-not-variables/



[1]. Достаточно большие структуры выделяются в куче, даже если их объявление находится в стеке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...