actionscript-3 - ActionScript 3 : Do you need to remove EventListeners?

标签 actionscript-3

在 actionscript 3 中,我动态创建对象并向其添加 EventListener。这些对象被添加到数组中,稍后可能会再次被删除。其他人可能会在以后再次添加。每次我创建一个对象时,我都会将这些 EventListeners 添加到它们中。但是,删除这些对象时是否也需要删除这些事件监听器?当我丢失对某个对象的所有引用但不删除这些 EventListener 时会发生什么?它们是留在内存中的某个位置,无法访问且不可用,还是 GC 会清理它们?

最佳答案

是的,如果您不使用弱引用,则必须删除事件监听器。如果存在对对象的引用,GC 将不会清除该对象,并且注册事件监听器会创建对该对象的引用,除非您设置 useWeakReference 参数(第 5 addEventListener 方法的参数)设置为 true,同时注册事件监听器。垃圾收集器不会计算弱引用。

//Using strong reference: needs to be removed by calling removeEventListener
sprite.addEventListener(Event.TYPE, listenerFunction, useCaptureBool, 0, false);

//Using a weak reference: no need to call removeEventListener
sprite.addEventListener(Event.TYPE, listenerFunction, useCaptureBool, 0, true);

关于actionscript-3 - ActionScript 3 : Do you need to remove EventListeners?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2004983/

相关文章:

actionscript-3 - 如何无缝循环FLV

actionscript-3 - 在 flex 中用鼠标移动移动富文本

apache-flex - 将 CURL 转换为 FLEX HTTP 请求

actionscript-3 - AS3 使用 Matrix 将 "scale"对象从其 "center"

apache-flex - 使用 Flex 3 绘制这样的东西的最佳方法是什么?

java - 场景应该删除图层还是图层自行删除?

actionscript-3 - 连接到Adobe AIR中的远程数据库

apache-flex - 弹性/ ActionScript : Dynamically accessing static var

actionscript-3 - 声音——播放了多少字节?

flash - tweenlite 比手动动画更快/更轻吗?