iOS开发中关于self.windows的rootviewcontroller

      最近开发的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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容