첫 번째 : 내 앱을 ARC로 포팅했는데 모든 것이 작동하는 것처럼 보였습니다. 하지만 이제는 문제가 발견되었습니다 : 스택에 UIViewController를 모달로 표시하는 UINavigationController가 있습니다. 그러나 모달 뷰 컨트롤러를 닫을 때 스택의 뷰 컨트롤러가 할당 취소 된 것처럼 보이지 않습니다. 여기에 내가 할 것입니다 : ARC UINavigationController 스택이 모달 뷰 컨트롤러로 표시 될 때 할당 해제되지 않습니다.
UIViewController* root = [[UIViewController alloc] init];
UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:root];
[self presentModalViewController:navi animated:TRUE];
그런 다음 루트에서 좀 더보기 컨트롤러를 밀어하지만 정말 중요하지 않습니다. 사실 나중에 전화 할 때입니다.
[self dismissModalViewControllerAnimated:TRUE];
루트가 할당 해제되지 않습니다. 물론 내 코드 루트에서 UIViewController의 하위 클래스이며 dealloc 및 viewDidUnload를 추적하지만 아무 것도 호출되지 않습니다.
아이디어가 있으십니까?
UINavigationController 내부에는 특별한 것이 없으며 표준 클래스입니다. 그리고 위의 UINavigationController 또는 UIViewcontroller에 대한 참조가 없습니다. 너무 많은 불필요한 코드를 게시하고 싶지 않았습니다. 하지만 그 주제에 대한 실험을하고 나중에 내 결과를 게시하려고합니다 ... –
좋아, 좋아, 실제로 ViewController (내게 수치)에 대한 강력한 참조를 발견. 다른 사용자 지정 클래스에 대한 대리자였으며 대리자는 id 대리자로 선언되었습니다. ARC에서는 기본적으로 __strong으로 설정됩니다. 그 죄송합니다! 따라서 ARC 아래에서 대리인을 사용하는 모든 사람들에게 : 마이그레이션 도구가 당신을 위해 그것을하지 않으면 약하게하십시오! –
미안 할 필요가 없습니다. 알아두면 유용합니다! 프로젝트를 이전해야 할 때를 대비해야 할 것입니다. – lxt