2010-03-05 7 views
1

Dans mon programme, j'ai deux classes: Collector et entité. Le collecteur stocke les entités dans NSMutableArray. Les collecteurs sont également stockés dans NSMutableArray (appelons-les collecteurs). Ensuite, j'ai un tel code (quelque chose comme ça):Objective-C: objet changeant à l'intérieur NSMutableArray

for (uint i = 0; i < [collectors count]; i++) { 
    Collector *curCollector = [[collectors objectAtIndex:i] retain]; 

    Entity *curEntity = [[Entity alloc] init]; 
    [curCollector addEntity:curEntity]; 
    [curCollector setSomeInt:50]; 

    [curEntity release]; 
    [curCollector release]; 
} 

Après l'exécution de cette partie de code, je n'ai pas de nouvelles entités à l'intérieur des collectionneurs, mais les changements de valeur SomeInt correctement. De plus, quand je déboguer mon code, à l'étape avant de libérer des variables, curCollector contient nouvelle entité et a une adresse, même comme l'un des objets à l'intérieur tableau collectionneurs, mais cet objet (dans le tableau de collection) n'a aucune entité.

Qu'est-ce que je fais mal?

P.S .:
Pendant le débogage, j'ai vérifié tous les objets - aucun fichier trouvé (en particulier pour les entités).
A propos addObject - tout le code de mise en œuvre est [entities addObject:newEntity];
Et une autre chose intéressante (aller dans mon explication ci-dessus) - valeur int est correctement réglée (objets de la gamme des collecteurs contiennent SomeInt == 50).

P.P.S: J'ai ajouté une ligne avant de libérer les parties de code:

[collectors replaceObjectAtIndex:i withObject:curCollector]; 

Aucun résultat !!

+0

Il est impossible curCollector d'avoir une entité et l'entrée des collectionneurs ont pas une entité si elles sont le même objet (qui est ce que je pense que vous dites). – nall

+0

Je n'ai aucune idée. Peut-être regarder de plus près la méthode addEntity :. – yehnan

+0

Assurez-vous également que le membre de votre entité n'est pas nul. Il semble que ce ne soit pas basé sur vos commentaires, mais cela pourrait être le problème (c'est difficile à dire sans plus de code). – nall

Répondre

0

Hmm. Je suis tellement désolé de perdre votre temps ... Il n'y a pas d'erreurs dans ce code.
Ce code (bien sûr) faisait partie du programme. Et l'erreur a été trouvée quelques étapes plus tard.
Les problèmes pendant le processus de mise au point ont été provoqués par le débogueur de Xcode, qui ne peut pas regarder profondément dans le contenu de classe. Je veux dire que cette entité était dans un tableau d'entités. Ce tableau était à l'intérieur du collecteur et ce collecteur se trouvait à l'intérieur du tableau des collectionneurs. Et quand j'ai essayé d'obtenir le tableau d'entités à une variable locale, le tableau retourné avait des entités (affichées dans le débogueur XCode).

Questions connexes