我一直在寻找清除数组在ActionScript 3As3 - 如何有效清除数组?
一些方法建议:(?内存泄漏)array = [];
其他会说:array.splice(0);
如果您有任何其他的,请分享。 哪一个效率更高?
谢谢。
我一直在寻找清除数组在ActionScript 3As3 - 如何有效清除数组?
一些方法建议:(?内存泄漏)array = [];
其他会说:array.splice(0);
如果您有任何其他的,请分享。 哪一个效率更高?
谢谢。
array.length = 0
或array.splice()
似乎最适合整体表现。
array.splice(0);
将执行速度比array.splice(array.length - 1, 1);
我想知道,你为什么要清除这种方式的阵列?清除对该数组的所有引用将使其可用于垃圾收集。 array = []
会这样做,如果array
是唯一参考array
。如果它不是那么你可能不应该emtpying它(?)
也请注意``数组接受字符串作为键。 splice和lenght都只能操作整数键,所以它们对String键没有任何影响。
BTW:array.splice(array.length - 1, 1);
相当于array.pop();
我确实希望能够将它清空垃圾回收。 – ALOToverflow 2010-02-10 18:28:15
很确定AS3中的数组不接受字符串作为键。对象是,但不是数组。 – 2010-02-10 18:30:55
@Omnomlets:你错了。下次尝试验证你的陈述。 – back2dos 2010-02-10 18:44:52
array.splice(0,array.length);
这一直工作得很好了我,但我还没有机会通过分析器运行它尚未
有一个关键array.pop()和array.splice(array.length - 1,1)之间的区别是那个pop将返回元素的值。
while(myArray.length > 0){
view.removeChild(myArray.pop());
}
对于具有100个元素阵列(以毫秒为基准,所需要的更少的时间下)::
// best performance (benchmark: 1157)
array.length = 0;
// lower performance (benchmark: 1554)
array = [];
// even lower performance (benchmark: 3592)
array.splice(0);
内存泄漏清理出当像阵列这非常适合方便一个衬垫?垃圾收集! – n4pgamer 2013-10-03 19:11:18