プロキシでは、私は明示的にリスナーを削除する必要がありますか?
-
25-09-2019 - |
質問
現在、私は私がPureMVCののマルチコアバリアントを使用していますフレックスアプリケーションに取り組んでいます。私の質問は、私は、リモート呼び出しを行うと、いくつかの(RESULTとFAULT)イベントリスナーを添付しています、私の代理です。だから私はゴミcollectonため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);
}
だからここにホストコントローラは、両方のリスナーの強い参照を保持しています。だから、resultEventはありません後ホストコントローラは、ガベージコレクションの対象であるか、私はゴミcollectioinのためのホストコントローラの資格を作成するためのリスナーの弱い参照を言及する必要がありますか?
解決
私はあなたが明示的にリスナーを削除するべきだと思います。 それは、少なくとも誰もがコードを読み取ることが容易になるだろう。
あなたはそのホストコントローラへの他の参照を保持している場合(あなたがのホストコントローラ()のからそれを得たとして)私はよく分かりません。 あなたが他の参照を持っている(例えば、のホストコントローラ()の場合は簡単作成 - 忘れ工場である)およびそれらのリスナーに弱参照を使用しない場合、それは前にも、ガベージコレクションのためのそれの資格を意味します限り、私はそれを理解するように、
- それはそれの仕事を終えます。所属していません StackOverflow