В прокси я должен удалить слушателей явно? - PullRequest
1 голос
/ 08 апреля 2010

В настоящее время я работаю над Flex-приложением, в котором я использую многоядерный вариант puremvc. Мой вопрос в моем прокси, я делаю удаленный вызов и подключаю некоторый (RESULT и FAULT) прослушиватель событий. Так что в моем коде обработчика событий я должен явно удалить слушателей для того, чтобы сделать класс remoteObject подходящим для сборки мусора?

   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 содержит сильные ссылки обоих слушателей. Таким образом, после resultEvent можно ли использовать hostController для сборки мусора, или я должен упомянуть слабую ссылку для слушателей, чтобы сделать hostController подходящим для сбора мусора?

1 Ответ

3 голосов
/ 08 апреля 2010

Я думаю, что вы должны удалить слушателей явно. По крайней мере, каждому было бы легче читать код.

Я не уверен, сохраните ли вы какие-либо другие ссылки на этот hostController (как вы получили от hostController () ). Если у вас нет каких-либо других ссылок (например, если hostController () - простая фабрика создания-забывания) и вы используете слабые ссылки на этих слушателей, это будет означать, что он имеет право на сборку мусора еще до него заканчивает свою работу - насколько я понимаю.

...