2010-02-04 6 views
3

J'ai un comportement étrange en utilisant ObjectUtil.copy() et ByteArray.writeObject/readObject().
Je clone un ArrayCollection et parfois le résultat est deux instances identiques de la classe.Flex: La fonction de clonage duplique mes données

Exemple:

var item:Object = new Object(); 
item.name = "Hello World"; 

var listItem:ArrayCollection = new ArrayCollection(); 
listItem.push(item:Object); 

var cloneList:ArrayCollection = ObjectUtil.copy(listItem); 

trace(cloneList.length);  
// 2 

Je ne comprends pas ce que je l'ai fait mal. Y at-il quelque chose qui manque? Il n'est pas reproductible pour tous les ArrayCollection. Quelque temps, ça fonctionne bien. Est-ce un bug de la fonction ObjectUtil.copy()?

+0

Copier ne signifie pas cloner. Créez votre propre méthode clone dans laquelle vous créez de nouveaux objets et copiez des valeurs de propriétés. –

Répondre

0

Si vous avez besoin d'un clone d'une collection de tableaux qui contiendra des références aux instances de la collection de tableaux d'origine, ne pouvez-vous pas simplement cloner le tableau source?

par exemple.

var listItem:ArrayCollection = new ArrayCollection(); 
listItem.push(item:Object); 

var cloneList:ArrayCollection = new ArrayCollection(new Array().concat(listItem.source));