DevPrep

Все темы › Управление памятью

Может ли reference type лежать на стеке?

Senior PRO

Ответ

Да. Объект класса по умолчанию выделяется в куче (swift_allocObject), но оптимизатор может разместить его на стеке, если докажет, что ссылка не покидает функцию. Решающее условие — не «фиксированный размер» (он у классов всегда известен), а escape analysis: объект не сохраняется в поле, не возвращается, не захватывается escaping-замыканием, не передаётся в непрозрачный код, который мог бы его удержать.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store