Всегда хорошая идея явно удалить слушателей, когда они вам больше не нужны, да, и то, как вы это делаете, прекрасно. Это может показаться немного многословным, но это все еще хорошая практика, и она заставляет вас привыкать знать, где находятся ваши слушатели, поскольку незнание так часто приводит к утечкам и неожиданному поведению.
Что касается useWeakReference, я почти всегда использую его сам, в дополнение к удалению ненужных слушателей. Для меня это стало правилом, а не исключением. Если вам нужно было выбрать один из них, удалите слушателей явно. Лично я делаю и то и другое.
На самом деле, я нашел количество случаев, когда было бы лучше оставить useWeakReference false, поскольку это предотвратит сбор мусора, особенно редко. Действительно, прежде чем я узнал, для чего был этот аргумент ( сообщение в блоге здесь ), я потратил массу времени на то, чтобы почесать голову после того, как получил исключения во время выполнения, вытекающие из инфраструктуры Flex, выполняющей вызовы компонентов, которые я был уверен удален из списка отображения.
Дипа Субраманиам косвенно упомянула об этом в своем выступлении по модели компонентов на прошлогодней конференции MAX (отличный доклад, достойный внимания); Я полагаю, что, как она выразилась, это было что-то вроде: «Я не знаю, почему команда Flash Player решила сделать false по умолчанию, а не true, но в 99% случаев вы захотите установить это значение на правда ".