在我的iPhone应用程序中,使用ARC推送某些视图控制器会导致大量内存分配,而这些内存分配无法释放。大多数Live Bytes都有标题VM:CoreAnimation
我尝试使用@autoreleasepool {}包装各种代码,例如推送视图控制器,但它没有任何区别。一旦不再需要将视图控制器设置为nil也无济于事。
非常感谢您的帮助和建议!
更新
我意识到内存分配的时间与从表视图中推送CorePlot图表的详细视图一致。详细视图也在表视图的头文件中引用。一个问题是我将详细视图设置为nil,然后在推送之前重新分配它。如果我只在首次加载表视图时启动详细信息视图,然后在每次推送之前刷新其内容,则内存分配仅发生一次。
但是,由于在第一次推送详细信息视图时仍然存在大量内存分配,因此我无法完全解决该问题,该视图从未被释放。
答案 0 :(得分:1)
也许您正在使用CoreGraphics框架在视图上绘制内容,但您没有发布coreGraphics对象。 ARC不发布CoreGraphics对象,必须手动保留/释放。
答案 1 :(得分:0)
我发现内存问题是由于创建新的Core-Plot图表而导致我在尝试释放它们时没有释放内存。
当我尝试取消分配图表时,我设法使用此功能提高了性能:
[graph removePlot:plot];
这足以显着改善这种情况,尽管我仍在努力获得100%的内存释放。从阅读Core Plot论坛看来,我并不是唯一一个遇到过这类问题的人......