Почему среда исполнения Swift не может поместить сохраненные свойства в существующую структуру для расширений?

Я думаю, что пример, приведенный Rico Mariani , был хорош: может быть целесообразным инициировать GC, если произойдет существенное изменение состояния приложения. Например, в редакторе документов может быть нормально запускать GC, когда документ закрыт.

1
задан Josh Caswell 18 January 2019 в 17:14
поделиться

1 ответ

Потому что расширения применяются ко всему типу (структура / класс). Для каждого экземпляра должно быть выделено хранилище ivar, и экземпляры, возможно, уже были созданы к моменту добавления расширения в систему. Информация о метатипах может быть обновлена; все существующие экземпляры (которые могут храниться в других экземплярах) не могут быть. Нет списка «всех существующих экземпляров», которые вы могли бы переместить и перераспределить (а также перераспределить их контейнеры).

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

0
ответ дан Rob Napier 18 January 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: