ARC的CoreAnimation内存问题

时间:2013-10-08 21:15:05

标签: ios memory automatic-ref-counting

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

enter image description here

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

非常感谢您的帮助和建议!

更新

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

但是,由于在第一次推送详细信息视图时仍然存在大量内存分配,因此我无法完全解决该问题,该视图从未被释放。

2 个答案:

答案 0 :(得分:1)

也许您正在使用CoreGraphics框架在视图上绘制内容,但您没有发布coreGraphics对象。 ARC不发布CoreGraphics对象,必须手动保留/释放。

答案 1 :(得分:0)

我发现内存问题是由于创建新的Core-Plot图表而导致我在尝试释放它们时没有释放内存。

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

[graph removePlot:plot];

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

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