2011-12-07 41 views
0

當一個具有當前正在執行的函數的對象刪除了所有的引用時會發生什麼?AS3 - 執行代碼的對象被刪除時會發生什麼?

我想要一個對話框類型的對象保存在我的程序的主類數組中,當對話框需要關閉時,我希望它在該關閉屏幕功能期間從數組中刪除。我的問題是,假設對話框對象以其他方式有資格進行垃圾回收,那麼它應該執行的代碼會發生什麼?

編輯澄清: 該數組是我的程序中的一個視覺元素層,其中對話框是一個。這個想法是關閉框的「OK」按鈕(或其他)也會將它從同時顯示的對象數組中移除。

回答

1

如果在執行此對象的函數時刪除了對象的所有引用,則該函數的其餘部分將繼續執行。完成後,該對象將在下一次垃圾回收循環中被刪除。

4

如果有引用它的東西(在您的情況下調用其中的方法),您的對象將不符合垃圾回收的條件。

如果你想使你的對話盒資格從自身內部的垃圾收集,你需要補充的是從數組自行拔除交易,一種方法,它可能是內等

你的可能看起來像這樣。

public function destroy():void 
{ 
    var ix:int = someArray.indexOf(this); 
    someArray.splice(ix, 1); 

    if(parent) 
     parent.removeChild(this); 

    // ...remove event listeners, etc 
} 
相關問題