AS3: маркировка переменной для сборки мусора, null или delete? - PullRequest
2 голосов
/ 28 января 2011

Если у вас есть переменная MovieClip, Sprite, String, Number, int, uint или Boolean, удалите ли вы ее ссылку, добавив:

myVariable = null;

OR

delete(myVariable);

Ответы [ 2 ]

4 голосов
/ 28 января 2011

use null

delete не будет работать с переменными, которые не определены динамически.

и всегда помните / никогда не забывайте ... что вы обнуляете ссылку, а НЕ очищаетепамять.то есть удаление одной ссылки не всегда достаточно, вам нужно удалить все ссылки.

пример:

var a:Object = {};
var b:Object = {};
a.name = "Alpha";
a.o = b;
b.name = "Beta";
b.o = b;

trace(b.name);
trace(a.o.name);
b = null;
trace(a.o.name);
trace(b.name);

, пока b больше не существует, ao (это объект, ранее известный какb) все еще рядом.

так что будьте осторожны !!!

4 голосов
/ 28 января 2011

установка его в null достаточна для удаления ссылки на содержащийся в нем объект.

Обратите внимание, что синтаксис оператора delete равен delete object.member, который удаляет member как ключ из object, и, следовательно, удалит ссылку на все, что в ней содержится.

обратите внимание, что сборщик мусора может появиться только после того, как все ссылки на данный объект будут удалены.

...