如果您有一个MovieClip,Sprite,String,Number,int,uint或Boolean变量,您是否通过添加以下内容删除它的引用:
myVariable = null;
OR
delete(myVariable);
答案 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
的对象)仍然存在。
所以要小心!!!