2

在我使用 ARC 的 iPhone 应用程序中,推送某些视图控制器会导致未释放的大量内存分配。大多数 Live Bytes 都有标头 VM:CoreAnimation

在此处输入图像描述

我尝试使用 @autoreleasepool { } 包装各种代码,例如推送视图控制器,但它没有任何区别。一旦不再需要视图控制器,将它们设置为 nil 也无济于事。

您的帮助和建议将不胜感激!

更新

我意识到内存分配的时间与从表格视图推送 CorePlot 图表的详细视图相吻合。在表视图的头文件中也引用了详细视图。一个问题是我将详细视图设置为 nil,然后在它被推送之前重新分配它。如果我只在第一次加载表视图时启动详细视图一次,然后在每次推送之前刷新其内容,则内存分配只发生一次。

但是,我还没有完全解决这个问题,因为当第一次推送详细视图时,仍然有很大的内存分配,并且从未释放。

4

2 回答 2

1

也许您正在使用 CoreGraphics 框架在视图上绘制一些东西,但您没有发布 coreGraphics 对象。CoreGraphics 对象不是由 ARC 释放的,它必须手动保留/释放。

于 2013-10-08T21:43:19.453 回答
0

我发现内存问题是由创建新的 Core-Plot 图表引起的,当我试图解除分配它们时,这些图表没有释放它们的内存。

当我尝试解除分配图表时,我设法使用此功能提高了性能:

[图删除绘图:绘图];

这足以显着改善这种情况,尽管我仍在努力获得 100% 的内存释放。从阅读核心情节论坛看来,我并不是唯一一个遇到过此类问题的人......

https://groups.google.com/forum/#!searchin/coreplot-discuss/memory/coreplot-discuss/nWui9VjnMtQ/er2FO3o9syYJ

于 2013-10-28T10:11:25.187 回答