2010-08-23 4 views
0

Je souhaite ajouter un élément dans le tableau de manière dynamique. Pour cela, j'utiliseaddObject crée une même valeur dans tous les tableaux

[myArray addObject:myword]; 

myword is a NSMutableString type object. 

sur chaque bouton cliquez sur myword get changes. Mais tout l'élément de tableau stocke la dernière valeur. Supposons que le tableau a pour la première fois 1 élément = "moi" La deuxième matrice devrait avoir 2 éléments = "moi", "vous". Mais ça montre "moi", "moi". Quel peut être le problème?

+0

poster le code où vous créez et ajoutez le mot (probablement votre méthode d'action de boutons ..) – lukya

+0

Pourquoi utilisez-vous une chaîne mutable? Dans la plupart des situations, vous devriez utiliser NSString. – JeremyP

Répondre

3

Étant donné que vous stockez probablement encore et encore la même instance de NSMutableString, il est naturel que la modification de cet élément change tous les éléments. Après tout, ils pointent tous vers le même objet.

Essayez:

[myArray addObject:[[myword copy] autorelease]]; 

Ou si vous avez besoin d'avoir NSMutableStrings:

[myArray addObject:[[myword mutableCopy] autorelease]]; 

Vous avez besoin du autorelease ici, sinon vous auriez une fuite de mémoire.

Questions connexes