Nel proxy dovrei rimuovere esplicitamente gli ascoltatori?
-
25-09-2019 - |
Domanda
Attualmente sto lavorando su un'applicazione flessibile in cui utilizzo la variante multicore di puremvc.La mia domanda è che nel mio proxy sto effettuando una chiamata remota e allegando alcuni listener di eventi (RESULT e FAULT).Quindi nel mio codice del gestore eventi dovrei rimuovere esplicitamente gli ascoltatori per rendere la classe remoteObject idonea per la garbage collection?
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);
}
Quindi qui hostController ha un forte riferimento per entrambi gli ascoltatori.Quindi, dopo resultEvent, hostController è idoneo per la garbage collection o devo menzionare un riferimento debole per gli ascoltatori per rendere hostController idoneo per la garbage collection?
Soluzione
Penso che dovresti rimuovere esplicitamente gli ascoltatori.Almeno renderebbe più facile per tutti leggere il codice.
Non sono sicuro se conservi altri riferimenti a quell'hostController (come l'hai preso hostController()).Se non hai altri riferimenti (ad esempio, if hostController() è una semplice fabbrica di creazione-dimentica) e utilizzare riferimenti deboli su quegli ascoltatori, ciò significherebbe che è idoneo per la garbage collection anche prima che finisca il suo lavoro, per quanto ho capito.