我有一个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
答案 0 :(得分:2)
通过在每个'CGContextStrokePath'之前添加'CGContextClosePath'解决了问题,现在应用程序将永远运行,而不会有任何'didReceiveMemoryWarning'。
-Gil Goodridge
答案 1 :(得分:1)
drawRect:
我没有看到任何泄漏。您可以使用ObjectAllocation的工具并查看malloc
调用的回溯,以查看请求它们的内容。您也可以离开setNeedsDisplay
并注释掉整个drawRect:
。如果记忆仍在增长,那么它就在其他地方。
我还会看看你正在改变的ivars或全局变量对其他线程可能产生的影响。例如,是否有任何其他帖子正在阅读fEcgDraw
或HH
并且由于这些线程在drawRect:
中被搞乱而可能无法释放内存?