2010-08-04 41 views
1

刪除被我有這樣的代碼:如何保證項目內部直放站的Flex

 <mx:Repeater id="allItemRepeator" 
        dataProvider="{_model.allItems}" 
        > 
       <components:ComponentSelector id="componentSelector" 
               dataLoad="{allItemRepeator.currentItem}" /> 
     </mx:Repeater> 

當預期從屏幕allItems項目在前看不見代碼的變化,但在內存中仍坐在!我通過一個具有「跟蹤」的組件內部的函數了解這一點,所以即使在組件從屏幕上消失後仍然顯示跟蹤輸出。如何確保元素在刪除引用時被刪除?將使用基於列表的組件來顯示項目而不是「Repeator」來解決問題(它需要大量重構我的代碼,所以我在試用之前詢問)

回答

0

有些東西仍然保留在對組件的引用上,所以它不會被垃圾收集。特別是綁定(我注意到你正在使用)對此是臭名昭着的。

調試問題的最佳方法是通過分析器運行應用程序,查看在刪除組件時是否保留對組件的引用。

+0

Thanks @Gregor我目前沒有Premium Flash Builder版本。你是否推薦另一種方法,直到我升級? – Tam 2010-08-04 16:18:17

+0

沒有看到代碼,知道保留參考的內容真的很難。綁定是最可能的罪魁禍首,但是如果組件本身是強大的EventListeners,它可能成爲問題。 中繼器不是最好的實踐,因爲他們有這樣的幾個問題... – 2010-08-04 16:54:53

+0

感謝@格雷戈它似乎有一個EventListener照片造成它!我通過爲該組件添加「removefromstage」的事件處理程序來手動刪除這些項目,並且它似乎可行 – Tam 2010-08-05 17:04:27