关闭视图控制器不会释放内存

5

我遇到了与内存有关的问题。也就是说,每当我进入第二个界面并返回(dismiss)时,内存就会不断地堆积。

我在第二个视图控制器中编写了以下代码。但它并没有释放内存。

    override func viewWillDisappear() {
        super.viewWillDisappear()
        self.dismissController(self)
        self.removeFromParentViewController()
}

提前致谢。


问题可能不在被解雇的控制器中,而是一些仍然存在于内存中的对象。你尝试过任何工具,比如“泄漏”吗? - Dmitri Pavlutin
3个回答

3

可能会创建保留周期。在类中的某个地方,你正在将“self”传递给另一个类或结构。在类中进行文本搜索以查找“self”。

如果需要帮助找到循环,将泄漏“self”的所有行发布在此处。


感谢您提供的搜索“= self”的提示。 - Laurent Maquet

2
当控制器没有调用dealloc时,意味着你有一些保留环。我们应该读取代码以找到保留环的位置。因此,您可以阅读此博客并查找代码问题:保留环

链接现在似乎已经失效。 - Marcy

0
如果您正在使用当前视图控制器,则应使用以下代码。
self.dismissViewControllerAnimated(true, completion: nil)

如果您正在使用导航控制器推送,则请使用以下代码。
self.navigationController?.popViewControllerAnimated(true)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接