Имея дело с такими странностями, есть несколько способов обнаружить, что не так.Первым и самым быстрым будет отладка с точкой останова перед проблемным фрагментом кода, а затем выполнение кода шаг за шагом.
Второй способ - удалить часть кода, либо создав новую свернутую версиютекущий код или комментируя часть кода.
Вот что я пробовал: Приложение:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
creationComplete="onCreationComplete()"
>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import weird.Person;
private function onCreationComplete() : void
{
var a : Person = new Person();
a.name = "A";
var b : Person = new Person();
b.name = "B";
var c : Person = new Person();
c.name = "C";
a.friendArrayList.addItem(b);
b.friendArrayList.addItem(c);
var someArrayList : ArrayCollection = new ArrayCollection([a,b,c]);
for each (var person : Person in someArrayList.toArray())
{
for each (var friend : Person in person.friendArrayList.toArray())
{
trace(person.name + " is friends with " + friend.name);
}
}
}
]]>
</mx:Script>
</mx:Application>
И класс Person:
package weird
{
import mx.collections.ArrayCollection;
public class Person
{
public var name : String = null;
public var friendArrayList : ArrayCollection = new ArrayCollection();
}
}
Если вы запустите приложение, вы увидите, чтоон выполняется как ожидалось.Это означает, что вы делаете что-то еще в своем коде, что порождает итерацию в одном из циклов.
Так что, если вы не выясните, что в вашем коде нарушено, это было бы интересно (дляпо крайней мере мне), чтобы увидеть остальное.