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에 밀어 넣은 후 릴리스를 포함하지 않으면 믿습니다.
여기에 무슨 일이 일어나고 있는지 아십니까?
어딘가에 할당 해제 된 인스턴스를 처리하는 것처럼 보입니다. NSZombieEnabled를 설정하여 앱을 실행하면 문제가있는 인스턴스를 확인할 수 있습니다. – Vladimir
팁 주셔서 감사. 할당 해제 된 인스턴스를 찾는데 도움을 준 NSZombieEnabled에 대해 알지 못했습니다. 여기 NSZombieEnabled에 대해 모르는 사람들은 xcode에서 활성화하는 방법입니다 : 1. Xcode 프로젝트의 Executables 그룹에서 실행 파일을 두 번 클릭하십시오. 2. 인수 탭을 클릭합니다. 3. "환경에 설정할 변수 :"섹션에서 "NSZombieEnabled"라는 변수를 만들고 해당 값을 "YES"로 설정합니다. 배포 용으로 이것을 제거하십시오! – sharkan