ARC和dismissModalViewControllerAnimated:未释放viewcontroller内存

时间:2012-09-29 16:41:32

标签: iphone ios uiviewcontroller modalviewcontroller

如何使用ARC有效地释放模态视图控制器的内存?

我在这个主题上看到了一些主题,但在处理模态视图控制器时,我实际上没有找到任何似乎是常见问题的答案。

我制作了一个示例应用程序,其中viewcontroller1提供了模态viewcontroller2。 当我解除viewcontroller2(来自viewcontroller1)时,内存未被释放! :((见下面的记忆日志)

奇怪:viewcontroller1中没有viewcontroller2的强引用,而且确实调用了viewcontroller2 dealloc ......

使用presentModalViewController / dismissModalViewControllerAnimated

显示/关闭viewcontrollers

查看我的记忆用法:

ViewController1显示:7.41 Mb用法
--ACTION:显示ViewController2--
ViewController2显示:8.11 Mb用法
--ACTION:关闭ViewController2--
ViewController1显示:8.06 Mb用法
--ACTION:显示ViewController2--
ViewController2显示:8.11 Mb用法
--ACTION:关闭ViewController2--
ViewController1显示:8.06 Mb用法
--ACTION:显示ViewController2--
ViewController2显示:8.11 Mb用法
--ACTION:关闭ViewController2--
ViewController1显示:8.06 Mb用法

由于

1 个答案:

答案 0 :(得分:0)

viewcontroller2中的dealloc通常会释放该类中分​​配的变量和资源,而不是视图控制器本身。此外,当您使用ARC时,内存会自动处理,并且可能无法在您希望的情况下释放。如果您不使用ARC,您可以完全控制内存管理,这是我们大多数人今天所做的事情。不要担心它会自动释放你的对象。否则你可以搜索类似于java中使用的终结器()方法来发送垃圾收集的对象(尽管ARC是差异然后是垃圾收集)。