Финализаторы в Adobe Flex 3
Используя Adobe Flex 3, есть ли способ указать финализатор?
2 ответа
В ActionScript 3 отсутствует концепция финализатора / деструктора даже на уровне AVM/ байт-кода.
Несмотря на то, что в ActionScript по сути нет деструктора / финализатора, я бы посоветовал иметь метод, который освобождает все ресурсы в вашем классе, когда они вам больше не нужны.
Сборщик мусора собирает только те объекты, которые больше нигде не нужны, и использует подсчет ссылок, чтобы определить, когда это так. Поэтому до тех пор, пока существуют неразрешенные прослушиватели событий, циклические зависимости (объекты, ссылающиеся друг на друга) и т. Д., Вы можете этого не замечать, но использование памяти будет увеличиваться, а сборщик мусора никогда не освобождает эти ресурсы вообще.
Поэтому вы должны иметь destroy()
или же finalize
метод, который:
- удаляет всех слушателей событий
- звонки
destroy()
или жеfinalize()
на вложенных объектах delete
все сильные объектные ключи в словарях- устанавливает все переменные типа объекта в
null
(это нормально, что примитивные значения не сбрасываются)
Для экранных объектов обычно неплохо вызывать этот метод, когда Event.REMOVED_FROM_STAGE
отправляется.