AS3:弱侦听参考不相应的初始化过程中?(AS3: Weak Listener References

2019-10-21 05:00发布

我目前了解,如果事件侦听器添加到与将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()方法其去除的事件侦听器?

Answer 1:

弱事件侦听器只是意味着听众没有在垃圾收集程序,如计数。 如果一个对象没有其他指针,但强劲的事件监听器,它不会被GC回收,如果它只有弱引用,那么它将被删除。

本身并非由GC删除的事件监听器,你必须删除他们以同样的方式,如果他们是强还是弱,但如果对象是无效弱引用听众应自动放入垃圾箱。

我个人认为,使用弱听者的促进陋习,你再也不必其实想想你所使用的资源,尽管它们在某些情况下非常有用。 我想有一个清理脚本剥夺你无效之前运行的听众吧。 虽然有双方的传道者 (他可能更好地解释它,如果你还在困惑)

-edited作出更清晰在情理之中



文章来源: AS3: Weak Listener References Not Appropriate During Initialization?