在关闭模块之前删除事件侦听器

时间:2011-08-18 12:10:26

标签: flex

我将此模块的实例添加到显示列表中,然后将其删除。 附加到foo的事件监听器是否会造成泄漏? 一个简化的模块:

<s:Module creationComplete="init()">
    <fx:Script>
        protected var foo:Bar = new Bar();
        protected function init() {
          foo.addEventListener(MouseEvent.CLICK, foo_clickHandler);
        }

        protected function foo_clickHandler(event:MouseEvent):void {
            //do something
        }
    </fx:Script>
</s:Module>

2 个答案:

答案 0 :(得分:1)

此模块没有内存泄漏,因为您将侦听器添加到本地对象,而不是StageStyleManager或其他一些全局可访问的内容。

答案 1 :(得分:0)

会的。您应该删除侦听器,或在创建侦听器时使用弱引用。

foo.addEventListener(MouseEvent.CLICK, foo_clickHandler, false, 0, true);