IOS window.rootViewController 切换原rootViewController无法释放(问题解决)

Posted ming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS window.rootViewController 切换原rootViewController无法释放(问题解决)相关的知识,希望对你有一定的参考价值。

 先说一下问题吧,今天遇到了一个奇怪的问题。一个界面通过消息通知刷新数据,断点跑了2次,感觉很奇怪。通过和公司小伙伴沟通发现是由于退出登录后再登录进去后发现此问题。我首先想到的就是此功能界面没有释放,但是查看界面处理没有特殊操作。里面想到就是因为切换rootViewController的时候原rootViewController没有释放掉。查看了原 rootViewController界面A,在发现界面A并没有其他原因导致其有可能不被释放。

立即想到了自己做的UIViewController 的扩展处理中有问题,把扩展去掉后释放正常。
先附上我切换rootViewController 的代码如下(代码中忽略我的其他操作)

+(void)setRootViewViewController:(UIViewController *)controller{
   UIWindow * window = [UIApplication sharedApplication].delegate.window;
   //清空root
   if (window.rootViewController){
       window.rootViewController = nil;
   }
   
   UINavigationController * navTabBar = [[UINavigationController alloc] initWithRootViewController:controller];
   window.rootViewController = navTabBar;
   system_titleStatusBarHeight   = [[UIApplication sharedApplication] statusBarFrame].size.height;
   system_titleViewHeight        = navTabBar.navigationBar.frame.size.height + system_titleStatusBarHeight;
   controller.automaticallyAdjustsScrollViewInsets = NO;
   if ([controller isKindOfClass:[UITabBarController class]]) {
       system_tabbarHeight = ((UITabBarController *)controller).tabBar.frame.size.height;
   }
   [JLBRouter manager].navigationVC = navTabBar;
}

在分析扩展代码中并没有发现导致没有释放的原因是我调用了
self.navigationController.presentationController 。
什么鬼东西,这也都可以????

技术图片
在这里做一个记录吧,希望给大家一个提示。

以上是关于IOS window.rootViewController 切换原rootViewController无法释放(问题解决)的主要内容,如果未能解决你的问题,请参考以下文章

最佳实践。通过支持 iOS 5、iOS 6 和 iOS 7 UI 使 iOS 应用程序通用

iOS 应用程序 - 如何仅为 iOS 8 用户添加 iOS 8 功能,同时仍支持所有 iOS 7 用户

ios手游平台 ios手游推荐 ios手游排行 ios手游模拟器 ios手游盒子

李洪强iOS开发之iOS学习方法收集

iOS开发 适配iOS10

ios兼容 iphoneX ios10 ios11