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

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

  • 相关阅读:
    模板方法模式
    策略模式
    代理模式
    单例模式
    工厂模式
    服务器负载过高问题分析
    支付宝APP支付开发- IOException : DerInputStream.getLength(): lengthTag=89, too big
    阿里云linux服务器挂载数据盘
    3.3.4.2选择特定行
    3.3.4.1选择所有数据
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/13280978.html
Copyright © 2011-2022 走看看