2010-01-12 64 views
1

這可能是一個愚蠢的問題。我想我已經知道答案,只是澄清。如果你在varible1中聲明一個對象,然後將該值傳遞給varible2。如果你決定null varible2,那麼只會殺死引用或對象本身。我想說不,但是再一次,你所做的每一件事都會影響到記憶中的空間。null一個對象kill參考或內存空間

這些是我班上的兩個變量。

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

上面是類變量。後來在我的代碼添加對象的對象數組

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

當我跟蹤我得到以下

[object Enemy1] 

我然後將其添加到可見對象數組

viewableObjects.push(objects[0]); 

下一個我刪除它。這是後來在線。我循環了代碼,這是我在第一個元素中看到的「我」。

viewableObjects[i][4] = null; 

,當我跟蹤同一第一varible 「對象[0] [4]」 ...它示出了

null 

回答

2

設置爲null的引用並不影響對象,除非它是最後一次引用該對象(在這種情況下,它使其有資格進行垃圾回收)

您可能想了解一些關於引用如何工作的更多信息。

+0

其實我只是測試一下。我創建了2個屬性是自定義類的類型。當我向Varible1聲明一個對象並追蹤它時,它顯示對象已存在。然後我把它放入varible2並將其設置爲null。我在varible1上做了一個跟蹤,它也顯示爲空。你能解釋剛剛發生的事嗎? – numerical25

+0

你不是很清楚。你能發佈你使用的代碼嗎? –

+0

對不起,我更新了我的第一篇文章 – numerical25

1

嘿,它肯定會有點混亂,但它是你真正必須瞭解的東西之一,所以它很好問。

在你的情況下,nulling變量2只會刪除引用,所使用的內存仍然是相同的(幾乎引用只需要很少的一點),你剛剛減少了引用計數。它不會被清除,直到所有的引用被刪除,或者所有的引用都被隔離,並且不會在應用程序中使用。即:引用它的唯一對象可用於垃圾收集。

+0

我更新了上面的代碼。在它中,我有2個數組,我打電話。然後,我在第一個對象中啓動一個對象,並將它推入第二個數組中。後來,當我空第二個,並跟蹤第一個,它顯示爲空。數組是不同的。你說的是有道理的,但我只是不確定上面發生了什麼。 – numerical25

+0

你能發佈完整的代碼嗎?你可以提示他們真的更多。我想看看是什麼造成了你「我」的價值觀,你的追蹤陳述以及其他任何事情。 –