2010-04-29 2 views
0

navigatorController의 rootViewController로 UITableViewController가 있습니다. 나는 다음과 같이 테이블 셀 누르면 는 :NavigationController를 이해하려고하면 스택에있는 ViewController의 개수가 유지됩니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
MessageHistory *msg = (MessageHistory *)[[self fetchedResultsController]objectAtIndexPath:indexPath]; 
ConversationViewController *chatController = [[ConversationViewController alloc]initWithNibName:@"ConversationView" bundle:nil andUser:msg.user]; 
[self.navigationController pushViewController:chatController animated:YES]; 
[chatController release]; 

을하지만을 나는 (네비게이션 바의 뒤로 가기 (back) 버튼을 사용하여) chatController에서 돌아있을 때

을 주석 나는 "EXC_BAD_ACCESS"를 얻을
//[chatController release]; 

이 문제를 해결합니다. 방법? navigationController에 push 할 때 retain count를 추가 할 때 pop이 나왔을 때 그것을 생각한 것입니까?
또한 내가 누출을 생성하는 navcontroller에 밀어 넣은 후 릴리스를 포함하지 않으면 믿습니다.
여기에 무슨 일이 일어나고 있는지 아십니까?

+0

어딘가에 할당 해제 된 인스턴스를 처리하는 것처럼 보입니다. NSZombieEnabled를 설정하여 앱을 실행하면 문제가있는 인스턴스를 확인할 수 있습니다. – Vladimir

+1

팁 주셔서 감사. 할당 해제 된 인스턴스를 찾는데 도움을 준 NSZombieEnabled에 대해 알지 못했습니다. 여기 NSZombieEnabled에 대해 모르는 사람들은 xcode에서 활성화하는 방법입니다 : 1. Xcode 프로젝트의 Executables 그룹에서 실행 파일을 두 번 클릭하십시오. 2. 인수 탭을 클릭합니다. 3. "환경에 설정할 변수 :"섹션에서 "NSZombieEnabled"라는 변수를 만들고 해당 값을 "YES"로 설정합니다. 배포 용으로 이것을 제거하십시오! – sharkan

답변

0

나는이 문제가 몇 번 있었고 오류를 찾기 위해 거의 미쳐 버렸습니다.

필자의 경우 UIViewController를 위임자로 설정하여 두 번째보기에서 UIWebView를 사용했습니다. 내 UIViewController dealloc 메서드에서, 나는 webView.delegate = nil을 넣는 것을 잊었다.

두 번째 UIViewController가 튀어 나와 할당이 해제되면 UIWebView가 위임자 (더 이상 존재하지 않는 두 번째 UIViewController)에게 메시지를 보냈습니다.

이 내용이 적용되는지 모르겠지만이 오류를 검색하는 데 며칠을 소비하므로 도움이 될 것입니다.

+0

내 문제는 아니지만 공유 주셔서 감사합니다 (블라디미르 내 의견을 참조하십시오), 당신의 시나리오는 아마도 내 프로젝트에 너무 도달 할 것입니다. 그것을 명심 해줘서 좋네. – sharkan

관련 문제