1

現在、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をガベージコレクションに適格にするためのリスナーの弱参照に言及する必要がありますか?

4

1 に答える 1

3

リスナーを明示的に削除する必要があると思います。少なくとも、誰もがコードを読みやすくなります。

そのhostControllerへの他の参照を保持しているかどうかはわかりません(hostController()から取得したため)。他に参照がなく(たとえば、hostController()が単純なcreate-forgetファクトリである場合)、それらのリスナーで弱参照を使用すると、作業が完了する前でもガベージコレクションの対象になります。私が理解している限り。

于 2010-04-08T19:37:13.563 に答える