2011-01-28 45 views
2

如果你有一個變量,它是一個MovieClip,雪碧,字符串,數字,INT,UINT,或布爾,你刪除它的參考加入:AS3:標記垃圾收集的變量,空或刪除?

myVariable = null; 

OR

delete(myVariable); 
+1

我不知道AS,但除非AS嚴重濫用術語「垃圾回收」,否則您不應該需要(請參閱其他GC'd語言的許多類似問題)。 – delnan 2011-01-28 17:43:01

+0

編輯我的問題,謝謝。 – redconservatory 2011-01-28 17:59:03

回答

4

設置它爲null足以移除對其包含的對象的引用。

。注意,操作者delete的語法是delete object.member,這消除memberobject的密鑰,並且因此將消除對任何它包含一個參考。

請注意,GC只能出現一次所有對給定對象的引用都將被刪除。

+0

刪除僅刪除動態對象。 – csomakk 2013-11-24 10:45:43

4

使用null

刪除將無法在沒有動態定義的變量工作。

永遠記住/永遠不會忘記...你沒有清除內存的引用。意思是刪除1引用並不總是足夠的,你需要刪除所有引用。

例如:

var a:Object = {}; 
var b:Object = {}; 
a.name = "Alpha"; 
a.o = b; 
b.name = "Beta"; 
b.o = b; 

trace(b.name); 
trace(a.o.name); 
b = null; 
trace(a.o.name); 
trace(b.name); 

而B不存在了,a.o(這是以前稱爲b的對象)仍然存在。

所以要小心!