ios – UIViewController没有释放自己

ios – UIViewController没有释放自己,第1张

概述我正在开发一个应用程序,根据它的状态改变它的rootViewController.要进行切换,我使用以下代码: - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ [self createManagedDocumentA 我正在开发一个应用程序,根据它的状态改变它的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改变为另一个时,我可以看到它.

问题是如何正确释放它?
非常感谢你!

解决方法 这里真正的问题是您正在更改窗口的根视图控制器.不要那样做.您应该设置一次,而不是再次设置.在应用程序的生命周期中应该只有一个根视图控制器.

找到另一种架构来显示正确的视图控制器并根据需要在它们之间切换.例如,它们可能都是根视图控制器的子项,或者一个可能是另一个前面的呈现视图控制器.

总结

以上是内存溢出为你收集整理的ios – UIViewController没有释放自己全部内容,希望文章能够帮你解决ios – UIViewController没有释放自己所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1044962.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存