1

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

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

我制作了一个示例应用程序,其中 viewcontroller1 以模态方式呈现 viewcontroller2。当我关闭 viewcontroller2(从 viewcontroller1)时,内存没有释放!:((见下面的内存日志)

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

使用 presentModalViewController/dismissModalViewControllerAnimated 呈现/关闭视图控制器

查看我的内存用法:

ViewController1 显示:7.41 Mb 使用
--ACTION:显示 ViewController2--
ViewController2 显示:8.11 Mb 使用
--ACTION:关闭 ViewController2--
ViewController1 显示:8.06 Mb 使用
--ACTION:显示 ViewController2--
ViewController2 显示:8.11 Mb 使用
--操作:关闭 ViewController2--
显示 ViewController1:8.06 Mb 使用情况
--操作:显示 ViewController2--
显示 ViewController2:8.11 Mb 使用
--操作:关闭 ViewController2--
显示 ViewController1:8.06 Mb 使用

谢谢

4

1 回答 1

0

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

于 2012-09-29T18:06:47.923 回答