每個APP都有唯一一個根控制器
每個app都是一個單例[UIApplication sharedApplication]豆村,它有唯一的keyWindow和之下的rootViewController例证,我們可以直接使用[[UIApplication sharedApplication]keyWindow].rootViewController 取出根控制器,但是很多時候我們需要直接切換根控制器赏迟,實現直接切換界面的效果公条。
事實上血当,我們可以直接建一個控制器賦值給根控制器,直接達到效果
坑點:
1.很多時候我們在控制器的處理上赊窥,直接使用present來modal控制器爆惧,當我們處于被modal出來的狀態(tài)時,我們直接切換根控制器锨能,是有很嚴重的問題的扯再,原來的控制器一直在內存里得不到釋放
2.當我們使用NSTimer的時候芍耘,即使對timer使用了[timer invalidate]的方法也沒有效果,都會導致原來的控制器得不到釋放
解決方法:
坑點1熄阻,presenting和presented之間相互強引用斋竞,必須調用dismiss方法再切換
坑點2,同樣NSTimer加入運行循環(huán)里一直沒有釋放秃殉,導致控制器不能釋放坝初,破除強引用最好的方法是引入一個第三方類來中轉