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 。
    什么鬼东西,这也都可以????

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

  • 相关阅读:
    HashMap源码解析
    如何同时运行两个Tomcat
    Thymeleaf遍历List<Map>和Map<>
    Apache POI详解
    如何管理系统的右键新建菜单
    datatable的dom配置
    如何获取Html的height和width属性(网页宽、高)
    什么是跨域?如何解决跨域问题?
    C# 各类文件扩展名
    C# 接口与抽象类的区别? 什么情景下使用接口,什么情景下使用抽象类?
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/13280978.html
Copyright © 2011-2022 走看看