在代理我应该明确地删除监听器?
-
25-09-2019 - |
题
目前,我对Flex应用程序的工作,我现在用了PureMVC多核变种。我的问题是在我的代理我正在远程调用,并附加了一些(result和fault)事件侦听器。所以在我的事件处理程序的代码,我应该删除听众明确作出RemoteObject类符合垃圾collecton?
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符合垃圾collectioin听众弱引用?
解决方案
我想你应该明确地删除监听器。 这将至少使它更容易为大家阅读的代码。
我不知道,如果你保留任何其他引用到hostController(如你得到它的 hostController()的)。 如果你没有其他任何引用(例如,如果的 hostController()的是一个简单的创建,忘记厂),并使用这些听众弱引用,这甚至会之前意味着它是符合垃圾回收它完成的工作 - 据我了解
不隶属于 StackOverflow