Основы управления памятью AS3 - PullRequest
2 голосов
/ 07 декабря 2011

Мне интересно, может ли кто-нибудь ответить на этот вопрос для меня.

Предположим, я создаю экземпляр объекта класса:

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 Ответ

3 голосов
/ 07 декабря 2011

Да, они будут собираться мусором, если нет других ссылок на эти объекты.

Общие сведения о сборке мусора в Flash Player 9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...