Actionscript 3 AS3删除未使用的变量

Actionscript 3 AS3删除未使用的变量,actionscript-3,flash,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

如何删除未使用和未初始化的变量?我有一些面具和滤镜,可能会根据屏幕大小使用,但当我不需要它们时,我能简单地把它们扔掉吗?例如:

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,但我想确保这将按预期工作

谢谢

简短的回答是否定的

在您提供的示例中,您实际上没有实例化任何对象,因此您不必担心任何问题。变量将在创建它的作用域期间存在,然后它将消失,不会产生任何不良影响没有明显的内存开销,也没有潜在的内存泄漏。

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

简短回答,否

在您提供的示例中,您实际上没有实例化任何对象,因此您不必担心任何问题。变量将在创建它的作用域期间存在,然后它将消失,不会产生任何不良影响没有明显的内存开销,也没有潜在的内存泄漏。


在实例化对象的情况下,不能实际删除它。为了帮助自动垃圾回收器尽快将其收集起来,请删除与对象关联的所有事件侦听器,更改(null有效)对该对象的所有引用,并且它应该在下次扫描时对其进行处理。

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


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

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


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

回答得很好,谢谢。我最担心的是开销。我有很少的变量是围绕应用程序的屏蔽和大小调整的,这些变量将保持未实例化。谢谢完美的答案,谢谢。我最担心的是开销。我有很少的变量是围绕应用程序的屏蔽和大小调整的,这些变量将保持未实例化。谢谢