2010-07-05 3 views
0

보기 컨트롤러를 현재 탐색 컨트롤러로 푸시합니다. 그것은 현재보기 컨트롤러 나가고 때를 제외하고, 잘 작동합니다, 그것은 충돌합니다.NSArray 변수로 인해 UINavigationController가 충돌 함

MyTableView *newPage = [[MyTableView alloc] initWithNibName:@"table2" bundle:nil]; 
[[self navigationController] pushViewController:newPage animated:YES]; 
//[newPage release]; 

충돌을 막기 위해 마지막 줄을 주석 처리합니다. 나는 변수가 공개 된 것에 대한 또 다른 글을 읽었다. NEWPAGE에서, 나는 단지 하나 개의 변수 (arrCellText)가, 내가하고 arrCellText의 방출을 설정 주석 경우 나는 할당 해제

[arrCellText release]; 

에 출시를 넣어

NSArray *temp = [[NSArray alloc] initWithObjects:@"string1", @"string2", @"string3", nil]; 
[self setArrCellText: temp]; 
[temp release]; 

initWithNibName

에 초기화됩니다, 그것은 잘 작동합니다. 메모리 관리를 완전히 이해하면 안되므로이 점을 더 잘 이해하고 싶습니다. TIA

+2

arrCellText 속성을 어떻게 설정 했습니까? 또는 -setArrCellText :를 어떻게 구현 했습니까? –

+0

예, 가지고 있습니다 : @property (nonatomic, retain) NSArray * arrCellText 내 .h 파일에 @synthesize arrCellText; .m 파일에 방금 ​​그걸 꺼내서 다시 실행했습니다. 이번에는 충돌없이 작동했습니다. 나는 정말로 혼란 스럽다. – Unplug

답변

0

어디에서 충돌이 발생합니까? 첫 번째로 은 navigationController에 푸시 한 후 'newPage'를 릴리스합니다 (여기에 유지 되었기 때문에).

돌아와서 newPage에서 액세스하려고 할 수 있습니다. 'newPage'는 뜻밖의 시간에 출시되었으므로 일부 가비지 값 (nil이 아님)이 있습니다.