【问题标题】:AS3 deletion of unused variablesAS3 删除未使用的变量
【发布时间】:2012-05-02 17:45:44
【问题描述】:

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

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 以便稍后进行垃圾清理,但我想确保这将按预期工作。

谢谢!

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    简短的回答,不。

    在您提供的示例中,您实际上并没有实例化任何对象,因此您不必担心任何事情。该变量将在创建它的范围内存在,然后它将消失,没有不良影响。 没有显着的内存开销,也没有潜在的内存泄漏。

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

    【讨论】:

    • 完美答案,谢谢。我主要担心开销。我很少有围绕应用程序的屏蔽和大小调整的变量,这些变量将保持未实例化。谢谢!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      相关资源
      最近更新 更多