iOS 跟换根控制器,之前的控制器得不到释放的问题
2016-12-13 本文已影响730人
djing
最近发现写的项目中有个严重的问题,就是切换根控制器后,发现之前的根控制器还在,并没有被销毁!
源代码中是这样写的:
LoginVC * vc = [[LoginVC alloc]init];
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:vc];
APP_WINDOW.rootViewController = nav ;
直接切换了根控制器,然后打开视图调试,发现之前的视图还在下面
百度很久没找到解决方法,现在在http://stackoverflow.com/questions/17632024/changing-the-rootviewcontroller-of-a-uiwindow
这个衔接上找到了解决方法:
1.以前的根控制器有循环引用,所以释放不了
2.切换根控制器的时候,要把window下的subviews删掉!
我现在把代码改成这样就好了:
LoginVC * vc = [[LoginVC alloc]init];
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:vc];
for (UIView *v in APP_WINDOW.subviews) {
[v removeFromSuperview];
}
APP_WINDOW.rootViewController = nav ;
问题解决!
希望对你们有所帮助!