1

据我目前了解,如果将事件侦听器添加到 useWeakReference 设置为 true 的对象,则它有资格进行垃圾收集,并且在垃圾收集进行扫描时将被删除。

public function myCustomSpriteClass() //constructor
    {
    this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener, false, 0, true);
    this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener, false, 0, true);
    }

在这种情况下,是否不适合使用弱引用事件侦听器初始化对象,以防垃圾收集器确实激活清除对象事件侦听器,因为它们是在对象初始化期间添加的?

在这种情况下,是否只适合创建一种 deallocate() 方法,该方法在对象无效之前删除事件侦听器?

4

1 回答 1

4

弱事件侦听器仅意味着侦听器不计入垃圾收集例程中,例如。如果一个对象除了强事件监听器之外没有其他指针,它不会被 GC 收集,如果它只有弱引用,那么它将被删除。

事件监听器本身不会被 GC 删除,如果它们是弱或强的,您必须以相同的方式删除它们,但是如果对象被无效,弱引用的监听器应该自动被丢弃。

我个人认为使用弱侦听器会促进不良做法,因为您不再需要实际考虑您正在使用的资源,尽管它们在某些情况下很有用。我将有一个清理脚本来剥离它在无效之前运行的侦听器。尽管双方都有传道者(如果您仍然感到困惑,他可能会更好地解释)

- 编辑以更清晰的意义 -

于 2010-04-19T09:07:46.050 回答