根控制器

每个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加入运行循环里一直没有释放,导致控制器不能释放,破除强引用最好的方法是引入一个第三方类来中转

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容