На очень конкретном замечании: при использовании EventListeners
в вашем коде могут произойти утечки памяти. Наиболее распространенный пример, который я видел в учебниках по AS / Flex для добавления слушателей, выглядит следующим образом:
button.addEventListener(MouseEvent.CLICK, doSomething);
Это работает просто отлично, но игнорирует один существенный момент: на слушателя настоятельно ссылаются. Это означает, что когда компонент, содержащий эту кнопку, является GC'd, слушатель сохраняется и сохраняет ссылку на кнопку, то есть она также не будет собрана.
Чтобы смягчить это, вы можете сделать одну из двух вещей:
button.addEventListener(MouseEvent.CLICK, doSomething, false, 0, true);
Здесь - это описание Adobe 3 дополнительных полей. Обратите внимание, что они говорят о сильных ссылках:
Сильная ссылка (по умолчанию) не позволяет вашему слушателю собирать мусор. Слабая ссылка не делает.
Другой вариант заключается в создании деструктора в вашем коде, поэтому, когда компонент, использующий EventListeners
, удаляет их перед тем, как разрушить:
button.removeEventListener(MouseEvent.CLICK, doSomething);