2009-11-16 4 views
0
@implementation Level 
@synthesize doors, rooms; 
- (id) init 
{ 
    self = [super init]; 
    if (self != nil) { 
     rooms = [[NSMutableArray alloc] init]; 
     doors = [[NSMutableArray alloc] init]; 
    } 
    return self; 
} 


- (void)generate{ 
    int room_count = 2; 
    Room *room; 
    for (int i=0; i<room_count; i++) { 
    room = [[Room alloc] init]; 
    [room generate_Doors]; 
    [self.rooms addObject:room]; 
    [room release]; 
    } 
    for (int i=0; i<[rooms count]; i++) { 
    Room *r=[rooms objectAtIndex:i]; 
    //After this point rooms is invalid 
    int l=[[r doors] count]; 
    for (int j=0; j<l; j++) { 
     Door *d=[[[rooms objectAtIndex:i] doors] objectAtIndex:j]; 
     [self.doors addObject:d]; 
    } 
    } 

}tableau NSMutable invalide après objectAtIndex

Ce que j'ai vu dans le débogueur

alt text http://img163.imageshack.us/img163/8090/20091117174111.png

+0

Je pense que vous interprétez mal les résultats que vous obtenez du débogueur. Faites un débogage NSLog pour vous assurer. par exemple. ajoutez la ligne suivante sous votre commentaire: NSLog (@ "Avons-nous encore quelque chose dans notre liste - permet de voir le nombre d'objets% d", [nombre de chambres]); – Till

+0

Pour cela, essayez 'NSLog (@" Premier objet:% @ ", [rooms objectAtIndex: 0]);'. –

Répondre

0

La fenêtre de débogage le fait parfois. "Hors de portée" quand ce n'est pas le cas.

Vous ne pouvez pas faire grand-chose à ce sujet, c'est un peu un bug dans XCode. Juste parce que le débogueur ne peut pas vous montrer la valeur dans la fenêtre, ne signifie pas que l'objet est parti.

Veuillez lire ici stackoverflow.com question about debugging. Il a de très bonnes informations de débogage. De bonnes choses à savoir!

0

Le fragment de débogage vous montrer n'indique pas de chambres est invalide, juste qu'il est n'affiche pas les valeurs attendues - si vous arrêtez le débogueur après la boucle et saisissez la console du débogueur:

po rooms 

Que signifie-t-il?

Le code que vous avez a l'air bien.

Questions connexes