我的 iOS 应用程序打开时出现登录提示。用户登录后,它会切换到主视图。
在 application:didFinishLaunchingWithOptions 中,我将 RootViewController 设置为 LoginViewController。LoginViewController 将 AppDelegate 作为其委托:
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:
- (void)userDidLogin
{
MainRecordViewController *mainRecordViewController = [[MainRecordViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mainRecordViewController];
[[self window] setRootViewController:navController];
}
通过将 NSLog 添加到 LoginViewController 的 dealloc 方法,LoginViewController 似乎在该阶段被销毁,并且执行按预期继续。
我没有做任何事情来显式关闭 LoginViewController,只是假设分配一个新的 RootViewController 将意味着旧的 RootViewController 消失并被 ARC 清理掉。
我可以依靠这种情况吗?这是一个明智的做法吗?
提前致谢。
詹姆士