initWithRootViewController가 전달된 viewController 클래스를 유지하지 않는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1054993

  •  20-08-2019
  •  | 
  •  

문제

SourceListViewController라는 사용자 정의 viewController가 있고 이를 UINavigationController에 추가하고 있으며 그 보기는 iphone 앱 창에 추가됩니다.SourceListViewController를 UINavigationController에 전달한 후 sourceListViewController를 해제합니다.

SourceListViewController *sourceListVC = [[SourceListViewController alloc] initWithNibName:@"SourceListViewController" bundle:nil];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:sourceListVC] autorelease];
[sourceListVC release];

이렇게 하면 뷰가 휴대폰에 로드된 후 앱이 충돌합니다.마지막 줄을 주석 처리하면 앱이 제대로 작동합니다.initWithRootViewController가 sourceListVC의 복사본을 유지해야 하지 않나요?

도움이 되었습니까?

해결책

NavigationController를 자동 릴리스하고 있습니다.따라서 NavigationController가 자동 해제되면(아마도 다음 runloop에서 발생함) sourceListVC도 마찬가지입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top