2011-02-11 43 views
0

如果在其他地方没有引用,函数内部创建的Objetcs会自动标记为垃圾回收?AS3范围和垃圾回收

我们说,我有一个名为SubClass的类。在构造函数中,我创建了一些displayObjects。 然后我将子类放在某个地方。当我删除这个SubClass实例时,是否将里面的对象标记为垃圾收集?

在此先感谢! 欢呼声 Bruno

回答

2

是的,除非SubClass的成员在子类之外的任何地方有引用,或者在SubClass(或其中的任何对象)中保留对类的外部的主动引用。

后者的典型示例是SubClass订阅Stage事件;如果监听器不弱(addEventListener的第5个参数),您将保持舞台和SubClass实例之间的活动链接,即使您删除该对象并将其设为null,它也不会被收集。 对于简单的侦听器,您可以将第五个参数设置为true,因此引用很弱并且会被垃圾收集器破坏。对于更复杂的情况(或者例如NetStreams,Loaders,Timeline audio等等),您需要创建一种方法让类为任何外部对象解除链接,并停止任何可能阻止收集的进程,如公共销毁()方法,关闭请求,停止媒体,removeListeners等...

但是,然后再次,对于简单的情况下,当你只有孤立的孩子,没有引用到你的课外,只需删除你的实例和null它的引用应该足够垃圾收集。

+0

非常感谢!该类没有引用其他类或对象。 – Drala 2011-02-11 15:41:41