一般的看法是當你從舞臺上移除一個組件時,你還需要手動移除所有的孩子,這樣他們就不會在內存中浮動。因爲父容器已被移除,所以它們不可見。移除元素/子元素是否也移除作爲皮膚一部分創建的元素?
舉例來說,這將是BorderContainer
中的Label
組件。我的理解是你需要先刪除Label
然後再刪除BorderContainer
。
當您創建組件(如TitleWindow
)時,它的默認外觀將closeButton
添加到標題欄/標題。
我添加了一個事件監聽器到關閉按鈕。 TitleWindow.closeButton.addEventListener();
在關閉按鈕事件調用的函數中,我想關閉/刪除窗口。
我的問題是這樣的。我是否需要手動刪除closeButton
作爲TitleWindow
的子項?或者我只是刪除聽衆,然後從舞臺上刪除TitleWindow
和皮膚創建的組件自動刪除/垃圾收集?
下面的答案解釋了從顯示樹中爲通用情況(不包括下面的皮膚信息)中刪除父項意味着所有子項都不再與所有連接/使用的對象的圖形關聯(它將是一個孤立的圖)這意味着他們有資格收藏。如果存在任何邊緣/引用(事件監聽器或簡單對象引用)將其綁定到活動對象的圖形上,則不會收集它(因爲它可能稍後被訪問,這可能導致空對象引用)。 – shaunhusain