我在flex项目中经常使用一个工作单元格。我将有一个可以调用Web服务的类,将数据放入sqlite数据库,使用数据刷新模型然后引发事件。
我通常称这些内联并传入一些单例类:
protected function CareerSynced():void
{
var process:ProcessWorkouts = new ProcessWorkouts(_dataModel, _trainerModel, _databaseCache, _database.Conn);
process.addEventListener("AllWorkoutsProcessed", AllWorkoutsProcessed);
process.UpdateAllUnprocessed();
}
然后我会得到这样的回复:
private function AllWorkoutsProcessed(event:DataReceivedEvent):void
{
//do something here
}
我的问题是,我是否正确添加了该事件监听器?我想我可能会导致内存泄漏,但我不确定。我也考虑过使用弱引用。我很困惑何时使用它们。这会是其中一个案例吗?
它应该是这样吗?
process.addEventListener("AllWorkoutsProcessed", AllWorkoutsProcessed,false, 0, true);
答案 0 :(得分:2)
我要么使用弱引用,要么只是删除侦听器:
private function AllWorkoutsProcessed(event:DataReceivedEvent):void
{
event.target.removeEventListener("AllWorksoutsProcessed",AllWorkoutsProcessed);
}
我可以列出我的理由,但我会指出你this。