Вычисляемая собственность не требует выделения памяти
Основной вопрос и даже может быть глупым, но он важен для меня. Я не знаю ответа, и я ценю ваше время.
[Вопрос]:
В Swift нет никакого выделения памяти для вычисляемого свойства, поэтому оно не является переменной. Это предложение можно найти на странице 197 второй главы книги iOS Apprentice (5-я версия)
[Вопрос]:
Нет никакого распределения памяти для вычисляемого свойства? Я не понимаю этого. В памяти должно быть какое-то место для хранения данных для вычислений, иначе как это вообще возможно? Или это означает, что нужно вычислить только вызываемое значение и удалить / уничтожить данные после того, как они были переданы вызывающей стороне, я в правильном направлении этой концепции?
Спасибо
2 ответа
Вычисляемые свойства очень похожи на функции, которые не принимают аргументов и возвращают значение. На время выполнения вычисляемого свойства некоторая память будет временно выделена в стеке для хранения локальных переменных вычисляемого свойства.
В дополнение к этому инструкции вычисляемого свойства должны храниться где-то в вашей скомпилированной программе. К счастью, вам нужна только одна копия определения, которую можно использовать для всех случаев.
Важным моментом является то, что для каждого экземпляра не требуется память.
По сути, это означает, что вы вычисляете результат каждый раз, когда используете его, а не ссылаетесь на адрес, в котором хранится результат любого предыдущего вычисления. Таким образом, она занимает память каждый раз, когда вы ее используете (которая освобождается после завершения вычислений), но нет места в памяти, в котором хранится значение для последующего обращения (что у обычных переменных / объектов есть).