zoukankan      html  css  js  c++  java
  • 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 。
    什么鬼东西,这也都可以????

    在这里插入图片描述
    在这里做一个记录吧,希望给大家一个提示。

  • 相关阅读:
    从键盘输入一串数据,以“exit"结束输入,且输出数据。
    判断指定盘符下文件夹是否存在
    java 输出图形
    Object对象类
    java继承
    Java封装
    java环境搭建系列:JDK环境变量详细配置
    java环境搭建系列:JDK从下载安装到简单使用
    ORACLE常见错误代码的分析与解决
    Java与C++面向对象不同点
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/13280978.html
Copyright © 2011-2022 走看看