【发布时间】:2011-01-20 15:21:03
【问题描述】:
最近我发现自己经常到处写 removeEventListeners,这让代码变得非常混乱。我知道这是一个最佳实践等,但总的来说它没有任何意义。垃圾收集器应该自己处理这么简单的任务,不是吗?当object设置为null时,自动移除所有监听器有那么难吗?
所以我只想确定是不是这样。将对象设置为 null 会自动删除所有附加的事件侦听器吗?
对此有何见解?
更新: 在我的情况下,情况是这样的 - 我创建一个对象并将一堆事件侦听器附加到它,然后过一段时间我需要重新初始化这个对象。当然,将这个对象设置为 null 比手动解除每个监听器的绑定要容易得多。大多数情况下,侦听器都是匿名函数,这意味着如果不进行代码重构,就不可能。当我简单地用 new 重新初始化一个变量时,我没有得到重复的侦听器等,但我不确定它是以前的值,以及所有侦听器都会被垃圾收集。是吗?
【问题讨论】:
-
Casalib 是一组很好的类,可以帮助您简化垃圾收集。当您有大量显示对象时很有用。
-
+1 for casalib - as3.casalib.org/docs/org_casalib_display_CasaMovieClip.html 查看 removeChildrenAndDestroy() 函数
标签: actionscript-3