Я пытаюсь найти лучший вариант использования анонимных прослушивателей событий, которые на 100% собираются после использования.Я получил эти два примера, но мне интересно, имеет ли это какое-то значение между ними ...
var listener1:Function = function(e:Event):void
{
resource.removeEventListener(e.type, listener1);
loadedHandler(resource);
listener1 = null;
};
resource.addEventListener(ResourceEvent.LOADED, listener1);
или этим ...
resource.addEventListener(ResourceEvent.LOADED, function(e:Event):void
{
Resource(e.currentTarget).removeEventListener( e.type, arguments["callee"]);
loadedHandler(resource);
}, false, 0, true);
Или будет лидругое, лучшее решение?Для меня очень важно, чтобы эти слушатели и функции правильно удалялись из памяти, потому что они могут очень часто выполняться в приложении.Я мог бы пойти и использовать Словарь для сопоставления всех слушателей и т. Д., А затем протестировать и удалить их в неанонимных слушателях и т. Д., Но это может быть очень быстрым, потому что могут быть ситуации, когда ресурсы могут загружаться асинхронно одновременнов разных классах приложения.
@ dominic: Вы имеете в виду размещение такой функции в теле метода, верно?Как я писал выше, приложение загружает ресурсы асинхронно, и может случиться так, что ресурс в данный момент загружается, в то время как другой класс откуда-то еще в приложении запрашивает тот же ресурс.Класс управления ресурсами (в котором содержится указанный код) затем подключается к прослушивателям событий, отправляемых ресурсом.Насколько я понимаю, если я использую методы или функции класса, как в вашем примере, в качестве слушателей, они будут повторно использоваться новым запросом, и события для более старого запроса никогда не будут срабатывать.Следовательно анонимные функции хранятся в переменной.Я предполагаю, что они все остаются в памяти, пока их соответствующий запрос не будет выполнен.Но, может быть, я полностью запутал это, и это не так?Я иногда нахожу материал мероприятия очень трудным для понимания.