美文网首页
iOS开发中关于self.windows的rootviewcon

iOS开发中关于self.windows的rootviewcon

作者: stardar | 来源:发表于2017-08-18 11:04 被阅读0次

          最近开发的ipad项目中,同时存在了两个splitviewcontroller,因为splitviewcontroller只能作为单独的viewcontroller又或者是navigationcontroller的rootviewcontroller,所以这2个vc之间的跳转,我就用了以下方法解决了:

    [self.view.window setRootViewController:vc];

         一开始用着觉得没什么问题,后来查内存泄漏的时候,发现如果在这2个vc之间重复跳转会导致内存稳定的上涨,而且不会回跌,接下来我把控件尤其是加载网络图片的imageview隐藏掉之后,再看内存的运行情况,就猜测到,这样的setRootViewController让上一个vc没有得到释放,于是改了以下方法:

    [UIApplication sharedApplication].keyWindow.rootViewController=vc;

    这种方法也没有让内存得到释放。


    后来在网上搜索良久,也没有找到合适的方式去解决问题,然后就用了比较投机取巧的方式去解决了问题,而且也没有内存得不到释放的问题了:

    [[SplitViewSingleTon sharedSplitViewSingleTon] showMainPageController];

    建立一个单例,把2个vc作为属性存在于内存之中,虽然方法也不是特别好,可是起码解决了内存得不到释放的问题。

    -(void)showAboutController{

           if (!_aboutController) {

                  UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

                  _aboutController = [storyBoard instantiateViewControllerWithIdentifier:@"AboutViewController"];

            }

    [UIApplication sharedApplication].keyWindow.rootViewController=_aboutController;

    相关文章

      网友评论

          本文标题:iOS开发中关于self.windows的rootviewcon

          本文链接:https://www.haomeiwen.com/subject/hruuhxtx.html