我正在尝试在flex应用程序中重用HTTPService对象,但我遇到了问题。在ResultEvent.RESULT的处理程序中,我正在删除侦听器,但它没有被删除。我必须从send()中捕获asyncToken并附加一个新属性,以便我知道它应该在处理程序中做什么。
我在这里设置了一个示例:http://www.152.org/flex/
您可以右键单击并查看源。
是否有其他人遇到过没有删除侦听器的问题? HTTPService是否应该重用?
答案 0 :(得分:3)
您无法删除mxml标记中添加的事件侦听器。 livedocs说:
您只能删除在ActionScript块中使用addEventListener()方法添加的事件侦听器。您无法删除MXML标记中定义的事件侦听器
在动作脚本(HTTPService
中)定义creationComplete
个对象,并使用addEventListener
方法添加事件侦听器,以便您可以调用removeEventListener
来重复使用。< / p>
答案 1 :(得分:0)
无法保证删除事件侦听器。在对象上安装时,尝试将其设置为弱事件处理程序。当你移除它时,Flex的GC有更好的机会释放它。
答案 2 :(得分:0)
我今天遇到了这个问题,这个应用程序运行了好几个月。经过一段时间的调试后,我发现我的flex编译器设置最近从3.1升级到3.4是罪魁祸首。现在我已经恢复了3.1作为编译环境,以便我的项目继续工作。
在我看来,这是在Flex 3.1之后的某个时候引入的一个主要错误,我希望adobe很快修复它。我一直在我的代码中重复使用HTTPService,这个bug使得版本3.4对我来说不可行。
希望这有帮助。