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