每个APP都有唯一一个根控制器
每个app都是一个单例[UIApplication sharedApplication],它有唯一的keyWindow和之下的rootViewController,我们可以直接使用[[UIApplication sharedApplication]keyWindow].rootViewController 取出根控制器,但是很多时候我们需要直接切换根控制器,实现直接切换界面的效果。
事实上,我们可以直接建一个控制器赋值给根控制器,直接达到效果
坑点:
1.很多时候我们在控制器的处理上,直接使用present来modal控制器,当我们处于被modal出来的状态时,我们直接切换根控制器,是有很严重的问题的,原来的控制器一直在内存里得不到释放
2.当我们使用NSTimer的时候,即使对timer使用了[timer invalidate]的方法也没有效果,都会导致原来的控制器得不到释放
解决方法:
坑点1,presenting和presented之间相互强引用,必须调用dismiss方法再切换
坑点2,同样NSTimer加入运行循环里一直没有释放,导致控制器不能释放,破除强引用最好的方法是引入一个第三方类来中转