我現在有兩個ArrayCollection(a,b)和a是可綁定的。我想用b重置一個。是否有任何區別重置一個ArrayCollection通過設置它的來源或改變它的參考
舊的代碼在我們的項目是這樣的:
a = new ArrayCollection();
for (var i:int = 0; i < b.length; i++) {
a.addItem(b.getItemAt(i));
}
然後,我認爲這可能會導致潛在的內存泄漏。所以,我把它改爲:
a.removeAll();
for (var i:int = 0; i < b.length; i++) {
a.addItem(b.getItemAt(i));
}
然後我讀一個話題:Flex optimization tip: ArrayCollection.removeAll() vs. ArrayCollection.source = new Array(). Is this a bug ? 它說的removeAll()會導致性能問題,當數據集大。
那麼這是否意味着有一個騙局?如果數據集很小,我應該使用removeAll,如果數據集很大,我不應該使用removeAll()?
另一個問題,我也讀了一個關於Changing the source of an ArrayCollection的話題。 它說,如果直接使用a = b,「它將終止正在監聽ArrayCollection實例上的事件的所有數據綁定控件」。我不明白這一點。我嘗試了a = b,並且它工作正常(使用as作爲dataprovider更新的視圖)。
使用a = b和a.source = b.source有什麼區別?
我是新來的Flex。提前致謝。
我不確定「我想用b重置」是什麼意思。從代碼中你想將所有元素從b複製到一個? – JeffryHouser