我的iOS应用有一个登录提示打开。 一旦用户登录时,它切换到主视图。
在应用中: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的将意味着旧的消失,由ARC收拾好。
我可以依靠总是既然如此? 这是一个明智的做法?
提前致谢。
詹姆士