AS3:标记变量进行垃圾收集,null还是删除?

时间:2011-01-28 17:37:27

标签: actionscript-3 garbage-collection

如果您有一个MovieClip,Sprite,String,Number,int,uint或Boolean变量,您是否通过添加以下内容删除它的引用:

myVariable = null;

OR

delete(myVariable);

2 个答案:

答案 0 :(得分:4)

将其设置为null就足以删除对其包含的对象的引用。

请注意,delete运算符的语法为delete object.member,它将member作为object的密钥删除,因此将删除对其包含的任何内容的引用

请注意,GC只能在删除对给定对象的所有引用后才会发生。

答案 1 :(得分:4)

使用null

delete不适用于未动态定义的变量。

并且永远记住/永远不会忘记......你正在归零引用而不是清除内存。意味着删除1个引用并不总是足够,您需要删除所有引用。

示例:

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不再存在,但a.o(以前称为b的对象)仍然存在。

所以要小心!!!