动作脚本:将对象设置为null,是否自动删除所有附加的事件侦听器?

时间:2011-01-20 15:21:03

标签: actionscript-3

最近我发现自己不断在各地编写removeEventListeners,这使得代码非常混乱。我知道这是一种最佳实践,但总的来说它没有任何意义。垃圾收集器应该自己处理这么简单的任务,不应该吗?当object被设置为null时,是否很难自动删除所有侦听器?

所以我只想确定是否是这种情况。将对象设置为null,会自动删除所有附加的事件侦听器吗?

对此有何见解?

更新: 在我的情况下场景是这样的 - 我创建一个对象并附加一堆事件监听器,然后一段时间后我需要重新初始化这个对象。当然,将此对象设置为null要比手动取消绑定每个侦听器容易得多。在大多数情况下,监听器是匿名函数,这意味着没有代码重构就不可能。当我只是用 new 重新初始化一个变量时,我没有得到重复的监听器等,但我不确定它是以前的值,以及所有的监听器都被垃圾收集。是吗?

2 个答案:

答案 0 :(得分:4)

不,您没有将对象设置为null,而是指向它的指针。它不会被垃圾收集器拾取,除非程序的任何其他部分(包括监听器)不需要它。你需要自己删除所有的监听器,但这不应该阻止你找到一个不那么混乱的方法 - 比如一个专用的clearListeners方法,或者一个帮助器类等。

答案 1 :(得分:0)

我认为在分配侦听器时需要使用弱引用,而“nulling”应该足够了。

相关问题