как я понимаю, если слушатель событий добавлен к объекту с использованием useWeakReference, установленным в true, тогда он имеет право на сбор мусора и будет удален, если и когда сборщик мусора выполняет развертку.AS3: Слабые ссылки на прослушиватели не подходят во время инициализации?
public function myCustomSpriteClass() //constructor
{
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener, false, 0, true);
}
в этом случае, он не подходит для инициализации объекта со слушателями слабых ссылок события, упаковывает сборщик мусор делает активировать развертку извлекая слушатель объекты событий, так как они во время инициализации объекта были добавлены?
В этом случае было бы целесообразным создать тип метода deallocate(), который удаляет прослушиватели событий до того, как объект будет аннулирован?
так ты говоришь, обработчик событий оба должны использовать слабые ссылки и чистую вверх функцию? извините, ваше заявление смущает меня: «Если у объекта нет других указателей, кроме сильных eventlisteners, он не будет собран GC, если он имеет только слабые ссылки, то он будет удален. сами слушатели событий не удаляются GC, вы должны удалить их таким же образом ». если я правильно читаю, вы сказали, что только слабые ссылки на прослушиватели событий будут удалены GC, но тогда вы скажете, что GC не удаляет их ... ??? – TheDarkIn1978
ive отредактировал сообщение, чтобы попытаться быть более явным. см., если это помогает понять, извините за плохую формулировку. – longstaff
ОК, я думаю, что, наконец, я понял. по существу, избыточно вызывать removeEventListener на объекте, который добавил слушателя со слабой ссылкой, до уничтожения цели прослушивателя события, установив его в null. – TheDarkIn1978