2010-12-28 3 views
2

내비게이션 컨트롤러를 사용하여 다른보기를 탐색하는 앱이 있습니다. 이것이 내가하는 일입니다.해제 된 인스턴스에 메시지가 전송되었습니다.

MapViewController *aMap = [[MapViewController alloc] initWithNibName:@"MapView" 
                   bundle:nil ]; 
[self.navigationController pushViewController:aMap 
            animated:YES]; 
[aMap release]; 

사용자 작업에서 첫 번째보기로 돌아가고 싶습니다. 이것은 내가 무슨 짓을 : 나는 울부 짖는 소리 메소드를 호출 버튼을 누르면 처음보기에 예상대로

-(void)alertView:(UIAlertView *)alertView 
didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    [self.navigationController popToRootViewControllerAnimated:NO]; 
} 

, 내 애플 간다. 하지만 문제는 "홈 버튼"을 누른 다음 앱을 다시 열려고 시도 할 때 발생합니다. 그런 다음, 다음과 같은 오류주는 응용 프로그램 충돌 :

2010-12-23 14:33:18.504 test[4549:307] *** -[MapViewController respondsToSelector:]: message sent to deallocated instance 0x5c26320 

내가 존재하지 않는 개체의 인스턴스로 메시지를 보내는 것을 이해하지만, 내가 찾을 수없는이 일어나는

마을이다 너는 어떤 권고가 있니?

+0

질문의 형식을 올바르게 지정하면 쉽게 읽을 수 있습니다. – Rits

+0

디버그 모드를 사용하면 정확한 행에서 중지됩니다. – Eiko

답변

13

뭔가가 할당 해제 된 후 MapViewController로 메시지를 보내려고합니다.

해당 객체를 참조하는 객체입니까? 하위 뷰의 위임자입니까, 아니면 알림을 받나요?

그렇다면 컨트롤러의 dealloc 메서드에서 알림 수신을 취소하고 컨트롤러를 참조하는 모든 delegate 매개 변수 (다른 개체)를 nil로 설정해야합니다.

+0

정말 고마워, 정말 내 생명을 구했어! 그리고 여러 viewControllers에서 위임 된 self.navigationController.delegate에 문제가 있었으며 결코 나를 괴롭 히고있는 nil로 설정하지 않았습니다 :) thaks many! – holographix

+0

알림에서 구독을 취소하기 전에 스레드의 메서드가 시작된 후 클래스가 할당 해제 된 후 메서드가 계속되면 어떻게됩니까? – richy

+0

고맙습니다. 괜찮 았습니다. 존재하지 않는 델리게이트 클래스로 위치를 업데이트하려고 시도하는 위치에 대한 싱글 톤 메서드에 대한 대리자를 설정했습니다. 그래서 viewWillDisappear에서 싱글 톤의 델리게이트를 0으로 설정해야했습니다. –

관련 문제