Flex ArrayCollection:RemoveAll()vs new ArrayCollection

问题描述:

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

删除列表中每个项目的所有迭代。当我想要使用它时,我无法看到一个案例。

+0

我可以诚实地说,我从来没有需要removeAll。我认为如果你只是一直在创建新的ArrayCollection,而不打算以某种方式清除旧的ArrayCollection,那么可能会出现内存问题。 – JeffryHouser 2011-03-13 02:44:58

在ArrayCollection包含一个带有propertyChange事件分派器的项目(绑定?)的情况下,您可能想要使用removeAll。 removeAll将很好地清理这些事件给你。

但是,如果使用新的ArrayCollection,则旧的ArrayCollection将从引用中解除分配,但可能永远不会被垃圾收集,因为它仍然具有附加的引用。这可能会导致内存泄漏。

请注意,如果filterFunction被定义并应用(.refresh()),并且源数组中有任何元素被此过滤器拒绝,removeAll()实际上不会从集合中移除所有元素。

+0

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