iOS 跟換根控制器,之前的控制器得不到釋放的問(wèn)題

? ? ? 最近發(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ì)你們有所幫助!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,726評(píng)論 1 14
  • 1.自定義控件 a.繼承某個(gè)控件 b.重寫(xiě)initWithFrame方法可以設(shè)置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,698評(píng)論 2 4
  • 一個(gè)app往往有很多界面,而界面之間的跳轉(zhuǎn)也就是對(duì)應(yīng)控制器的跳轉(zhuǎn),控制器的跳轉(zhuǎn)一般有兩種情況 push 或者 mo...
    Dariel閱讀 15,592評(píng)論 73 185
  • “簡(jiǎn)易音標(biāo)”最先由肖家旗發(fā)明的,肖先生已經(jīng)90歲了,上海人,他在1999年的時(shí)候?qū)懥艘槐緯?shū)《英語(yǔ)簡(jiǎn)易注音法》 ,他...
    詹小蟲(chóng)閱讀 5,342評(píng)論 1 9
  • 今天我再次買(mǎi)藥,希望自己健康,以前覺(jué)得自己離藥遙遠(yuǎn),尤其中藥,偏偏我這么年輕就開(kāi)始把很多錢(qián)花在不健康的身體上,我以...
    64f8e520b49a閱讀 252評(píng)論 0 2

友情鏈接更多精彩內(nèi)容