我正在学习Swift。我不会说我是新手,但是我敢肯定,就像许多在线学习一样,我已经错过了很多了解实际情况的基本步骤。
在我的应用程序走得很远之后,我现在发现我的内存管理非常差。我正在使用SDWebImage缓存,它肯定会受到GIFS的影响,但现在我正在学习有关保留周期和取消初始化的更多信息。
有人可以解释为什么从未调用UITabBarController deinit内部的ViewController吗?为什么这不是一件坏事? (除非是这样),并且在使用标签栏控制器时只是有关内存管理的一般建议/指导。我研究了保留周期及其原因并加以修复,但是根据xCodes工具工具,这似乎不是我的问题。
任何建议将不胜感激
谢谢。
答案 0 :(得分:1)
选项卡栏控制器不会创建和销毁它管理的视图控制器(选项卡)。它保留所有这些内容,因此用户可以根据需要在它们之间进行切换。因此,只要标签栏控制器仍然存在,标签中的视图控制器就会保留。
如果应用程序的根视图控制器是永远不会消失的选项卡栏控制器,则选项卡的视图控制器也不会消失。
如果相反,您创建了一个标签栏控制器并将其推入导航堆栈或以模态显示,则在弹出/关闭该标签栏控制器时将对其进行释放,并且随后将释放视图控制器。
答案 1 :(得分:0)
此外,可能未取消初始化对象的另一个原因是由于引用。由于您刚刚启动Swift,因此我强烈建议您查找有关参考周期,ARC(自动参考计数)和内存泄漏的教程。他们会教你关于
弱变种
并有适当的时间使用它。刚开始时,我想说的不是太重要,但是在以后尝试从事软件开发工作时,它们很有价值。