一个明显的错误:
var arr:Array = [1,2,3,4,5,6];
for each(var b:* in arr)
{
if(b == 3)arr.splice(arr.indexOf(b),1);
trace(b);
}
打印出 1,2,3,5,6
元素4没有了,因为他的位置到了被删除的3位置上了。而指针会next到下一个值,4是不会被遍历的
在复杂的(消息)系统中,如果采用注册和移除来处理的话,注意不要出现这个低级错误。不然会消息派送丢失。
逆向遍历数组可以解决遍历删除问题。但对于复杂的插入删除来说,最好的方案是挂起置空。