В прокси следует явно удалять слушателей?
-
25-09-2019 - |
Вопрос
В настоящее время я работаю над приложением Flex, где я использую многокурсную вариант puremvc. Мой вопрос в моем прокси, я делаю удаленный звонок и прикрепив некоторые (результат и неисправности) слушателя события. Таким образом, в моем коде обработчика событий я должен явно удалить слушателей для изготовления класса RemoveObject, имеющих право на мусорное ведение?
public function getTableGridData():void
{
var hostController:RemoteObject=this.hostController("ABC");
hostController.addEventListener(ResultEvent.RESULT, handleResult);
hostController.addEventListener(FaultEvent.FAULT, handleFault);
hostController.getTableData();
}
private function handleResult(event:ResultEvent):void
{
ApplicationFacade.getInstance(key).sendNotification("abc", event.result);
}
Итак, здесь HostController проводит сильную ссылку как слушателей. Таким образом, после результирования HostController имеет право HostController для сбора мусора или я должен упомянуть слабую ссылку для слушателей для создания HostController, имеющих право на Collectionion?
Решение
Я думаю, что вы должны явно удалить слушателей. По крайней мере, упростит бы каждому читать код.
Я не уверен, что вы сохраните любые другие ссылки на этот хостконтроллер (как вы его получили HostController ()). Если у вас нет других ссылок (например, если HostController () Это простой создатель-забывающая фабрика) и использует слабые ссылки на те слушателя, что означало бы, что он имеет право на сбор мусора даже до того, как он закончит свою работу - насколько я понимаю.