3

이상한 동작이 있습니다. 내 응용 프로그램은 UINavigationController으로 시작됩니다. 보기 컨트롤러 ANavigationController을 밀면 돌아가서 모든 것이 잘 작동한다는 경고를 시뮬레이트합니다. 나는 동일한 뷰 컨트롤러 (ANavigationController) 같은 방식을 누르면iOS 메모리 경고가 할당 취소 된 UIViewController에 전송되었습니다.

돌아가서 메모리 경고를 시뮬레이션 - 응용 프로그램이 충돌을 오류 :

[ANavigationController retain] : message sent to deallocated instance.

내가 밀어 컨트롤러 및 할당 취소의 주소를 인쇄 한이 디버깅하는 동안 하나 먼저 푸시 온

  1. - 푸시 제어부 주소 0xDA724F0이다.
  2. 돌아가서 메모리 경고를 시뮬레이트하면됩니다.
  3. 두 번째 푸시 - 주소가있는 컨트롤러의 방법 0xDA724F0이라고합니다.
  4. 새로 푸시 된 컨트롤러 주소는 0xFA720F0입니다.
  5. 다시 가서 오류 메모리 경고 충돌 시뮬레이션 :

    [ANavigationController retain] : message sent to deallocated instance 0xDA724F0.

Why deallocated controller (in step 4) gets memory warning message at all?

편집

내가 ARC를 사용하고

합니다.

편집

NSZombie를 할당을 테스트하기 위해 악기를 실행하고 활성화 한 후 나는 그러나, 예상되는 장소에서 사고를 가지고 -1 참조 카운트가 UIkit 라이브러리에보고하고 책임있는 발신자는 다음과 같습니다

+[UIViewController _traverseViewControllerHierarchyWithDelayedReleaseArray:block:]

+0

예외가 throw 될 때 '모든 예외'중단 점을 설정하고 스택에서 어떤 일이 일어나는지 살펴보십시오. 어딘가에 나쁜 포인터가있는 것처럼 들리므로 이제 찾아야합니다. 요즘 ARC를 사용하고 있는지 알면 도움이 될 것입니다. 요즘에는 그렇지 않을 이유가 거의 없습니다. – Caleb

+0

didReceieveMemoryWarning에서 뭐하고 있니? – CW0007007

+0

아무 것도. [super didReceieveMemoryWarning]에게 전화 해주세요. 또한 델리게이트와 관련된 문제를 제거하기 위해 모든 클래스를 지우고 가장 간단한 상태로 두었습니다. 배경색을 배경으로 설정하는 것입니다. – Misha

답변

0

난 이 문제가 해결 방법인지 문제 해결 방법인지는 확실치 않지만이 특정 파일에 대해 ARC를 사용하지 않으면이 문제가 해결됩니다. 물론 나는 스스로 가서 기억을 관리해야했습니다.

아직도 문제의 원인을 알 수 있습니다.

EDIT

이 해결책을 발견. 내 다른 질문에 대한 내 대답을 참조하십시오 : [UINavigationController retain]: message sent to deallocated instance