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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top