Финализаторы в Adobe Flex 3 - PullRequest
1 голос
/ 29 июля 2010

Используя Adobe Flex 3, есть ли способ указать финализатор?

Ответы [ 2 ]

5 голосов
/ 29 июля 2010

В ActionScript 3 отсутствует понятие финализатора / деструктора, даже на уровне AVM / байт-кода.

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

Несмотря на то, что в ActionScript по сути нет деструктора / финализатора, я бы посоветовал иметь метод, который освобождает все ресурсы в вашем классе, когда они вам больше не нужны.

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

Таким образом, вы должны иметь метод destroy() или finalize, который:

  • удаляет всех прослушивателей событий
  • вызывает destroy() или finalize() для вложенных объектов
  • delete s все сильные ключи объектов в словарях
  • устанавливает для всех переменных типа объекта значение null (это нормально, если примитивные значения не сбрасываются)

Для экранных объектов обычно неплохо вызывать этот метод при отправке Event.REMOVED_FROM_STAGE.

...