AS3删除未使用的变量

时间:2012-05-02 17:45:44

标签: actionscript-3 flash

如何删除未使用和未初始化的变量?我有一些面具和过滤器可能会根据屏幕尺寸使用,但当我不需要它们时,我可以简单地摆脱它们吗?例如:

var appMask:Shape;
if ((screenR % 1) > 0) {
    appMask = new Shape;
    appMask.graphics.beginFill(0x000000);
    appMask.graphics.drawRect(0,0,screenW,screenH);
    appMask.graphics.endfill();
} else {
    //delete appMask variable?
}

我也考虑过在变量创建时创建新的Shape,并将其设置为null以便稍后进行垃圾清理,但我想确保它能按预期工作。

谢谢!

2 个答案:

答案 0 :(得分:3)

简短回答,不。

在您提供的示例中,您实际上没有实例化任何对象,因此您实际上没有什么可担心的。变量将在创建它的范围内存在,然后它将消失,没有任何不良影响。 没有明显的内存开销,也没有可能泄露的内存。

如果您确实实例化了一个对象, 实际上无法删除它。为了帮助自动垃圾收集器尽快获取它,删除与对象关联的所有事件侦听器,更改(null工作)对该对象的所有引用,并且它应该在下次扫描时处理它。

答案 1 :(得分:0)

在这种情况下,您不必执行任何操作来删除appMask,如果它未被使用且未在应用程序中的任何位置引用,则它占用的内存将被垃圾收集器释放。您不必在else块中将其显式设置为null。

另一方面,您可以使用delete关键字删除动态对象的成员,但不能删除局部变量。