何时删除事件监听器?

时间:2011-01-23 01:35:59

标签: actionscript-3 events

你怎么知道何时你应该删除事件监听器?

例如,我知道如果我有一个TimerEvent监听器,当我停止和/或删除我的计时器时,我可以安全地删除该事件。

或者,如果我在舞台上有一个显示对象,并且我将其删除,我可以安全地删除与显示对象关联的任何事件侦听器。

还有其他例子吗?

1 个答案:

答案 0 :(得分:5)

删除事件侦听器有两个原因:

  1. 您不再希望因任何原因接收活动。这非常简单。您的代码已完成侦听并将其关闭。

  2. 您已完成该对象,并且您希望它被垃圾回收。这是一个更微妙的,但如果做得不好可能会导致真正的内存泄漏。您会看到,当观察者向observable添加事件侦听器时,observable会保留对观察者的引用。因此,您可以释放对观察者的引用,认为它将被垃圾收集,但如果可观察者仍然存活则不会。由于observable无法知道何时释放监听器,因此您已经有效地创建了内存泄漏!您的代码没有明确的引用,因此您无法取消它,并且observable将不会执行此操作。因此,如果您希望对象完全取消引用并因此正确地进行垃圾回收,则需要删除事件侦听器。