0

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

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

谢谢!

4

2 回答 2

3

简短的回答,不。

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

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

于 2012-05-02T17:49:32.940 回答
0

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

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

于 2012-05-02T17:49:41.063 回答