AS3内存管理基础知识

时间:2011-12-07 16:33:29

标签: flash actionscript-3

我想知道是否有人可以为我回答这个问题。

假设我创建了一个类对象的实例:

var holderObject:HolderObject = new HolderObject();
addChild(holderObject);

作为HolderObject构造函数代码的一部分,它分配了10个新的实例变量:

var mcArray:Array = new Array();

for (var i:uint = 0; i > 9; i++) {
var newMC:MovieClip = new MovieClip();
newMC.addEventListener(MouseEvent.CLICK, doSomething, false, 0, true);
mcArray.push(newMC);
addChild(newMC);
}

如果我现在设置holderObject = null;

这些内存分配是否可用于垃圾回收?

或者我是否需要明确撤消我所做的步骤,即:

destroyHolder(holderObject);


function destroyHolder(theHolder:HolderObject):void {

 for (var i:uint = 0; i > 9; i++) {

    theHolder.mcArray[i].removeEventListener(MouseEvent.CLICK, doSomething);
    theHolder.removeChild(theHolder.mcArray[i]);
    theHolder.mcArray.splice(theHolder.mcArray.length-1, 1);   

 }

removeChild(theHolder);
theHolder = null;


}

1 个答案:

答案 0 :(得分:3)

是的,如果没有其他对这些对象的引用,它们将被垃圾收集。

Understanding garbage collection in Flash Player 9