我正在开发一款应用程序,根据其状态更改其rootViewController。为了进行切换,我使用以下代码:
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self createManagedDocumentAndContext];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *storyboardId = [userDefaults boolForKey:@"Profile Created"] ? @"User Stats" : @"Profile";
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:storyboardId];
return YES;
}
为了切换回去,我从展示的ProfileVC中调用这个方法:
- (void)returnOldRootViewController
{
UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow;
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
OLDUserStatsVC *userStatsVC = [storyboard instantiateViewControllerWithIdentifier:@"User Stats"];
userStatsVC.userProfile = self.userProfile;
[currentWindow setRootViewController:userStatsVC];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:YES forKey:@"Profile Created"];
}
问题: rootViewController已更改,但先前的视图控制器未被释放。它停留在应用程序的“后台” - 当VC切换到另一个VC时,我可以看到它。
问题是如何正确释放它?非常感谢!
dealloc
的日志证明这一点。 - mattwillFinishLaunching
。请改用didFinishLaunching
。 - matt