iPad上的drawRect导致内存问题

时间:2011-08-27 17:31:19

标签: ios drawrect

我有一个5标签的Tab Bar Controller iPad应用程序。 其中一个选项卡(EKG)导致内存问题。我已经运行了仪器,所有我能看到的是malloc分配不断增加,大约12分钟后,我的所有View Controller首先获得didReceiveMemoryWarning级别1,然后是级别2,然后{ {1}}。

应用程序设计工作的方式是当EKG选项卡处于活动状态时,每200毫秒触发一次SigAbort 0 termination,以便在屏幕上绘制(绘制)EKG样本。当我让应用程序正常运行时,它会在大约12分钟后终止。

但是,如果我保留setNeedsDisplay并注明setNeedsDisplay中的代码,它就会运行 永远。我不知道我的'drawRect'中有任何内存分配,但有人正在执行这些drawRect以下是我的mallocs代码:

drawRect

2 个答案:

答案 0 :(得分:2)

通过在每个'CGContextStrokePath'之前添加'CGContextClosePath'解决了问题,现在应用程序将永远运行,而不会有任何'didReceiveMemoryWarning'。

-Gil Goodridge

答案 1 :(得分:1)

drawRect:我没有看到任何泄漏。您可以使用ObjectAllocation的工具并查看malloc调用的回溯,以查看请求它们的内容。您也可以离开setNeedsDisplay并注释掉整个drawRect:。如果记忆仍在增长,那么它就在其他地方。

我还会看看你正在改变的ivars或全局变量对其他线程可能产生的影响。例如,是否有任何其他帖子正在阅读fEcgDrawHH并且由于这些线程在drawRect:中被搞乱而可能无法释放内存?