2009-08-18 10 views
1

J'essaie actuellement de remplir et NSMutableArray avec quelque chose comme ceci:Question sur NSMutableArray

deck = [[NSMutableArray alloc] initWithCapacity:52]; 
for (int suit = 0; suit <= 3; suit++) { 
    for (int value = 1; value <= 13; value++) { 
    ANormalCard *card = [[ANormalCard alloc] initWithSuit:suit value:value]; 
    [deck addObject:card]; 
    [card autorelease]; 
    } 
} 

Maintenant, le problème est quand je vais sur le tableau, seul le dernier objet que je crée est 52x dans le tableau. Une idée de ce que je fais mal?


Edit:

le -initWithSuit ressemble à ceci:

- (id) initWithSuit:(int)suit value:(int)val { 
    if ((self = [super init])) { 
     theSuit = suit; 
     theValue = val; 
    } 
    return self; 
} 

J'utilise NSEnumerator * enumerator = [deck objectEnumerator]; et une boucle while pour itérer sur le tableau.

+0

assurez-vous que initWithSuit: value: ne retourne pas toujours le même objet – cocoafan

+0

I don ' Je crois que j'ai compris la question - quel est le problème avec le dernier objet? –

+2

Ce code semble bien, comment diffère votre code actuel et pouvez-vous poster le code pour initWithSuit: valeur:? – grahamparks

Répondre

2

Cet extrait de code a l'air parfaitement bien. Le problème est probablement dans votre méthode -initWithSuit:value: - Je vérifierais si vous initialisez accidentellement les cartes incorrectement.


Edit: La méthode init vient de publier par le demandeur semble bien aussi. Quelle est la sortie exacte que vous voyez qui vous amène à croire que seul le dernier objet a été ajouté 52 fois? Comment exactement examinez-vous le tableau? (Votre commentaire indique que vous utilisez un NSEnumerator, mais pouvez-vous éditer votre question pour inclure l'extrait que vous utilisez pour cela?

+0

le -initWithSuit ressemble à ceci: - (id) initWithSuit: (int) valeur de costume: (int) val { if ((self = [su par init])) { theSuit = costume; theValue = val; } retournez-vous; } – eemceebee

+0

Je l'ai ajouté à votre question. –