2011-03-12 60 views
1

何時想要清除數組集合時,使用removeAll()vs只是新的ArrayCollection。Flex ArrayCollection:RemoveAll()vs new ArrayCollection

刪除列表中每個項目的所有迭代。當我想要使用它時,我無法看到一個案例。

+0

我可以誠實地說,我從來沒有需要removeAll。我認爲如果你只是一直在創建新的ArrayCollection,而不打算以某種方式清除舊的ArrayCollection,那麼可能會出現內存問題。 – JeffryHouser 2011-03-13 02:44:58

回答

8

在ArrayCollection包含一個帶有propertyChange事件分派器的項目(綁定?)的情況下,您可能想要使用removeAll。 removeAll將很好地清理這些事件給你。

但是,如果使用新的ArrayCollection,則舊的ArrayCollection將從引用中解除分配,但可能永遠不會被垃圾收集,因爲它仍然具有附加的引用。這可能會導致內存泄漏。

4

請注意,如果filterFunction被定義並應用(.refresh()),並且源數組中有任何元素被此過濾器拒絕,removeAll()實際上不會從集合中移除所有元素。

+0

+1非常方便知道這一點 – dannrob 2013-06-20 14:02:58