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