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]; 
    } 
    } 

}NSMutable 배열 무효 한 후 objectAtIndex

이 내가 디버거에서 본 적이 있다는 것입니다

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

+0

디버거에서 얻은 결과를 잘못 해석했다고 생각합니다. NSLog 디버깅을 수행하여 확인하십시오. 예 : 귀하의 코멘트 아래에 다음 줄을 추가하십시오 : NSLog (@ "우리는 여전히 우리의 목록에 뭔가를 가지고 있습니다 - 개체 수 % d를 볼 수 있습니다, [객실 수]); – Till

+0

그 점에 관해서는'NSLog (@ "첫번째 객체 : % @", [rooms objectAtIndex : 0]);'을 시도하십시오. –

답변

0

가끔 디버그 창이 나타납니다. "범위 밖"이 아닌 경우.

당신이 할 수있는 일은별로 없지만 Xcode에서는 약간의 버그가 있습니다. 디버거가 창에 값을 표시 할 수 없기 때문에 객체가 사라진 것은 아닙니다.

여기에있는 내용은 stackoverflow.com question about debugging입니다. 그것은 아주 좋은 디버깅 정보를 가지고 있습니다. 좋은 물건 알아라!

0

당신이 객실을 표시하지 않습니다 보여 디버깅 조각은 그것이 단지, 무효 예상 값을 표시하지 않습니다. - 루프 이후에 디버거에서 멈추고 디버거 콘솔에 입력하면 디버거 콘솔에 입력하십시오.

po rooms 

무엇이 표시됩니까?

코드는 괜찮습니다.