null一个对象kill引用或内存中的空格

时间:2010-01-12 02:49:05

标签: flash actionscript-3 actionscript flash-cs4

这可能是一个愚蠢的问题。我想我已经知道了答案,请澄清一下。如果在varible1中声明一个对象,然后将该值传递给varible2。如果您决定将varible2置为null,那么也只会杀死引用或对象本身。我想说不,但是再说一遍,你所做的一切都是为了自己的参考,也影响了记忆中的空间。

这是我班上的2个变量。

private var objects:Array;
private var viewableObjects:Array;

以上是类变量。稍后在我的代码中,我将一个对象添加到对象数组

objects[0][4] = new Enemy1();

当我追踪时,我得到以下

[object Enemy1]

然后我将它添加到可查看对象数组

viewableObjects.push(objects[0]);

接下来我删除它。这是后来的事情。我循环遍历我在第一个元素中看到“i”的代码。

viewableObjects[i][4] = null;

当我追踪相同的第一个变量“objects [0] [4]”时......它显示

null

2 个答案:

答案 0 :(得分:2)

设置对null的引用不会影响对象,除非它是对该对象的最后一次引用(在这种情况下,它使其符合垃圾回收的条件)

您可能想要了解更多关于参考如何工作的内容。

答案 1 :(得分:1)

嘿,这肯定会让人感到有些困惑,但这是你真正必须理解的事情之一,所以很高兴。

在你的情况下,归零变量2只删除引用,使用的内存仍然是相同的(几乎,引用确实需要一点点),你刚刚减少了引用计数。在删除所有引用,或者所有引用都被隔离,并且未在应用程序中使用之前,它不会被清除。 ie:引用它的唯一对象可用于垃圾收集。