2012-06-04 3 views
0

Is removeEventListener по мере необходимости, как dealloc?(AS3) Is removeEventListener необходимо?

Я знаю, что в AS3 можно получить утечки памяти, и мне просто интересно, не является ли удаление слушателей событий одним из этих способов.

+0

возможно дубликат [Actionscript 3: вам необходимо удалить EventListeners Do] (http://stackoverflow.com/questions/2004983/actionscript-3-do -вы-потребность удаляемого-eventlisteners) –

ответ

2

Да, я создал огромный проект, не удаляя EventListener, и после того, как долго не использовать это действительно получить много памяти ...

Любой объект с сильной ссылкой не будет мусора, до сильной ссылки удален .... это относится к EventListener, привязок и т.д ...

вы можете removeEventListener вручную с помощью removeEventListener(Event.TYPE, function) или с помощью WeakReference ...

Добавление прослушивателя событий с WeakReference вам просто нужно добавить дополнительные параметры в addMethod ...

obj.addEventListener(Event.Type, Function, false, 0, true)

addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void

Параметры:
типа Тип события.
прослушиватель Функция прослушивателя, которая обрабатывает событие. Эта функция должна принимать объект события в качестве единственного параметра и не должна
возвращение ничего, как это показано в примере:
функции (ЭВТ: Event): пустота

Функция может иметь любое имя.
useCapture Определяет, работает ли слушатель в фазе захвата или фазах цели и пузырьков. Если для параметра useCapture установлено значение true,
прослушиватель обрабатывает событие только во время фазы захвата, а не в фазе цели или пузырька. Если useCapture является ложным, слушатель обрабатывает событие только во время фазы цели или пузырька. Чтобы прослушать событие во всех трех фазах, вызовите addEventListener() дважды, один раз с useCapture установите значение true, затем снова с useCapture установите значение false.
приоритет Уровень приоритета слушателя событий. Приоритеты обозначаются 32-разрядным целым числом. Чем выше число, тем выше приоритет. Все слушатели с приоритетом n обрабатываются до слушателей с приоритетом n-1. Если два или более слушателя имеют одинаковый приоритет , они обрабатываются в том порядке, в котором они были добавлены. Приоритет по умолчанию - 0.
useWeakReference Определяет, является ли ссылка на слушателя сильной или слабой.Сильная ссылка (по умолчанию) запрещает вашему слушателю собирать мусор. Слабой справки нет.
функции-члены класса уровня не подлежат мусоре

4

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

Смежные вопросы