2012-05-02 46 views
0

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

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? 
} 

我也曾考虑作出的变量创建新的形状,以及后来将其设置为null的垃圾清理,但我想,以确保按预期这会工作。

谢谢!

回答

3

简答题,没有。

在您所提供的例子,你实际上并没有任何实例化对象,所以你真的没有什么可担心的。该变量将在其创建的范围内存在,然后它将消失,没有不良影响。 没有明显的内存开销,也没有可能泄漏的内存。

在你实例化一个对象的情况下,你不能实际上删除它。为了帮助自动化垃圾收集器尽快提取它,删除与某个对象关联的所有事件侦听器,更改(null工作)对该对象的所有引用,并且应该在其下次扫描时处理它。

+0

完美答案,谢谢。我最担心的是开销。我几乎没有涉及屏蔽和确定应用程序的大小,这些应用程序将保持不被理解。谢谢! –

0

在这种情况下,你没有做任何事情来删除appMask,如果不使用,而不是在应用它占用的内存会被垃圾收集器释放的任何地方引用它。您不必在else块中将其明确地设置为null。

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