? ? ? 最近發(fā)現(xiàn)寫(xiě)的項(xiàng)目中有個(gè)嚴(yán)重的問(wèn)題,就是切換根控制器后,發(fā)現(xiàn)之前的根控制器還在,并沒(méi)有被銷(xiāo)毀!
? 源代碼中是這樣寫(xiě)的:
LoginVC * vc = [[LoginVC alloc]init];
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:vc];
APP_WINDOW.rootViewController = nav ;
直接切換了根控制器,然后打開(kāi)視圖調(diào)試,發(fā)現(xiàn)之前的視圖還在下面

百度很久沒(méi)找到解決方法,現(xiàn)在在http://stackoverflow.com/questions/17632024/changing-the-rootviewcontroller-of-a-uiwindow
這個(gè)銜接上找到了解決方法:
1.以前的根控制器有循環(huán)引用,所以釋放不了
2.切換根控制器的時(shí)候,要把window下的subviews刪掉!
我現(xiàn)在把代碼改成這樣就好了:
LoginVC * vc = [[LoginVC alloc]init];
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:vc];
for (UIView *v in APP_WINDOW.subviews) {
[v removeFromSuperview];
}
APP_WINDOW.rootViewController = nav ;
問(wèn)題解決!
希望對(duì)你們有所幫助!