iOS 응용 프로그램이 로그인 프롬프트와 함께 열립니다. 사용자가 로그인하면 기본보기로 전환됩니다.로그인 성공 후 RootViewController 재 할당
응용 프로그램 : didFinishLaunchingWithOptions에서 RootViewController를 LoginViewController로 설정했습니다. 로그인이 성공
LoginViewController *login = [[LoginViewController alloc] init];
[login setDelegate:self];
[[self window] setRootViewController:login];
경우, LoginViewController은 AppDelegate에의 userDidLogin 메소드를 호출합니다 :
if([[self delegate] respondsToSelector:@selector(userDidLogin)]) {
[[self delegate] userDidLogin];
}
userDidLogin 새로운 UINavigationController가를 생성하고 RootViewController로 할당합니다
을 LoginViewController는 위임과 AppDelegate에있다- (void)userDidLogin
{
MainRecordViewController *mainRecordViewController = [[MainRecordViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mainRecordViewController];
[[self window] setRootViewController:navController];
}
NSLog를 LoginViewController의 dealloc 메소드에 추가하면 LoginViewControl ler는 그 단계에서 파괴되고 그 실행은 예상대로 계속됩니다.
LoginViewController를 명시 적으로 닫는 데 아무런 작업도하지 않았지만 새로운 RootViewController를 할당하면 이전 버전이 사라지고 ARC가 정리할 수 있다는 가정에 의존합니다.
언제나 그렇다고 신뢰할 수 있습니까? 이것은 합리적인 접근입니까?
미리 감사드립니다.
야고보 rootViewController
재산 상태의
사이드 노트 : ARC가 공개하지 않은 내용과 확실하지 않은 것이 있으면 dealloc 메소드를 구현하고 NSLog (@ "MySuperDuperClass의 인스턴스가 ARC에 의해 할당 해제 됨")와 같이 인쇄 할 수 있습니다. – Groot
고마워요. 이미 해 봤습니다. 그것이 "NSLog를 dealloc 메소드에 추가함으로써 ..."라는 의미입니다. 보기가 제대로 닫힌 것처럼 보입니다. 항상보기가 꺼져있는 것처럼 보입니다. 그러나 저는 항상 그 일에 의지 할 수 있는지 궁금합니다. 나는 그것이 괜찮다고 생각하지만, 잘못 될 수 있다는 가정과 같은 느낌이 들었습니다. ... – James