当我浏览我的应用程序一段时间后,我的iPod 4G出现此错误,整个屏幕变白或应用程序挂起,然后我必须重新启动应用程序。
**malloc: *** mmap(size=24576) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug**
我知道错误代码= 12 通常意味着内存问题,但我已将ARC用于我的应用。
当我快速连续点击应用程序中的多个按钮时,会发生同样的错误。
我为这个问题做了谷歌,但找不到任何东西。
任何帮助都将不胜感激。
提前致谢。
答案 0 :(得分:0)
看起来你的内存不足了。在didReceiveMemoryWarning
方法中放置一个简单的NSLog语句,看看是否会触发。还可以尝试运行Instruments来检查并找到应用中任何超额内存消耗的来源。虽然ARC很有用并且避免了大量的人工干预,但 不 确保您永远不会耗尽内存。
尝试阅读有关调试malloc相关内容的this。
答案 1 :(得分:0)
请注意,对于ARC,对象往往会被放入自动释放池中,所以虽然你可能已经完成了一个对象并且它已经超出了范围或它; s指针已经被填满了,它可能仍然会被挂起,直到运行循环结束。
如果你有一个很大的活动,那会产生很多临时对象,那就可以填满内存。
一种解决方案是使用@autoreleasepool{ }
块中的临时对象包装代码。
另一种方法是将活动拆分为多个部分,并在runloop的单独迭代中运行它们。 GCD或performSelector:after:0
可以提供帮助。