0

我正在尝试在 flex 应用程序中重用 HTTPService 对象,但遇到了问题。在 ResultEvent.RESULT 的处理程序中,我正在删除侦听器,但它没有被删除。我必须从 send() 中捕获 asyncToken 并附加一个新属性,以便我知道它应该在处理程序中做什么。

我在这里设置了一个示例:http
://www.152.org/flex/ 您可以右键单击并查看源代码。

有没有其他人遇到过没有删除听众的问题?不应该重用 HTTPService 吗?

4

3 回答 3

3

您不能删除添加到 mxml 标记中的事件侦听器。 livedocs说:

您只能删除在 ActionScript 块中使用 addEventListener() 方法添加的事件侦听器。您不能删除在 MXML 标记中定义的事件侦听器

HTTPService在 actionscript (应用程序的)中定义您的对象creationComplete并使用方法添加事件侦听器addEventListener,以便您可以调用removeEventListener它们以重用。

于 2009-10-23T05:02:19.443 回答
0

无法保证删除事件侦听器。在您的对象上安装它时,请尝试使其成为弱事件处理程序。当您删除它时,Flex 的 GC 更有可能释放它。

于 2009-10-23T00:36:24.437 回答
0

我今天在一个运行了几个月的应用程序上遇到了这个问题。经过数小时的调试后,我发现最近将我的 flex 编译器设置从 3.1 升级到 3.4 是罪魁祸首。现在我已经恢复 3.1 作为编译环境,以便我的项目继续工作。

在我看来,这是在 Flex 3.1 之后某个时候引入的一个主要错误,我希望 adobe 尽快修复它。我一直在我的代码中重复使用 HTTPService,这个错误使 3.4 版对我不适用。

希望这可以帮助。

于 2009-12-18T22:06:50.967 回答