0

UINavigationController에 밀어 넣으려는 UIViewcontroller가 있습니다. 차례로 presentModalViewController : animated를 사용하여 모달보기로 푸시합니다.이 코드의 문제점은 무엇입니까? 모달보기 컨트롤러에 navController를로드하려고합니다.

여기 내 코드입니다 :

코드가 실행
TargetViewController *targetViewController = [[[TargetViewController alloc] init] autorelease]; 
UINavigationController *targetNavController = [[[UINavigationController alloc] initWithRootViewController:targetViewController] autorelease]; 
[self presentModalViewController:targetNavController animated:YES]; 

, 모달 뷰 부하가 예상대로하지만, dismissModalViewControllerAnimated 후 : 호출, 모달 뷰는 아래로 슬라이드 앱 충돌합니다.

나는 GDB에서 다음과 같은 오류가 발생합니다 : 는 - [의 CALayer는 유지] : 메시지가 할당이 해제 된 인스턴스에 질문

첫 부분을 전송 : 위의 코드와 본질적으로 잘못된 있나요?

두 번째 부분 : 위의 코드에 아무런 문제가 없다면 디버그 옆을 어디에서보아야합니까?

추가 정보는 : 내가하지 방출을하거나 navController를 autorelease를 , 그것을 잘 작동합니다. 그러나 Instruments는 버려진 메모리를 보여줄 것입니다.이 메모리는 출시되지 않은 navController라고 가정 할 수 있습니다. 어쩌면 모달 뷰 컨트롤러

P.S. 그 코드는 위의 ViewController, navController 및 모달 뷰의 메모리 관리와 관련이 있습니다. 왜냐하면이 코드를 사용하기 전에 내 코드가 작동했기 때문입니다.

답변

0

이 문제를 해결했습니다. VC를 풀어 충돌을 일으켰습니다. 의견을 보내 주셔서 감사합니다.

0

일반적으로 탐색 컨트롤러가 루트 컨트롤러로 작동하므로 navController를 뷰로 푸시하지 않습니다. 뷰는 navController에서 푸시됩니다. 푸시 된 뷰가 있으면 다음 뷰를 모달로 표시 할 수 있습니다.

0

autorelease을 사용하지 않으면 어떻게 될까요?

즉 :

TargetViewController *targetViewController = [[TargetViewController alloc] init]; 
UINavigationController *targetNavController = [[UINavigationController alloc] initWithRootViewController:targetViewController]; 
[targetViewController release]; 
[self presentModalViewController:targetNavController animated:YES]; 
[targetNavController release]; 
+0

위 코드를 사용하면 targetViewController가 예상대로로드되지만 닫히면 (dismissModalViewControllerAnimated가 호출 될 때) 앱이 충돌하고 내 게시물에 포함 된 오류 메시지가 표시됩니다. –

+0

어떤 iOS SDK/Xcode 버전을 사용하고 있습니까? –

관련 문제