0

当我浏览我的应用程序一段时间时,我的 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 用于我的应用程序。

当我快速连续单击应用程序中的多个按钮时,会发生同样的错误。

我为这个问题做了谷歌,但找不到任何东西。

任何帮助,将不胜感激。

提前致谢。

4

2 回答 2

0

请注意,使用 ARC,对象往往会被放入自动释放池中,因此虽然您可能已经处理了一个对象并且它已经超出范围或者它的指针已被取消,但它可能仍然会一直徘徊直到结束运行循环。

如果你有一个很大的活动,会创建很多临时对象,那么这会填满内存。

一种解决方案是将带有临时对象的代码包装在一个@autoreleasepool{ }块中。

另一种是将活动拆分为多个部分,并在运行循环的单独迭代中运行它们。GCD 或者performSelector:after:0可以在这里提供帮助。

于 2014-07-31T20:51:54.417 回答
0

看起来你的内存不足了。在你的方法中放置一个简单的 NSLog 语句didReceiveMemoryWarning,看看它是否会触发。还可以尝试运行 Instruments 来检查和查找应用程序中任何多余内存消耗的来源。虽然 ARC 很有帮助并且可以避免大量人工干预,但它并不能确保您永远不会耗尽内存。

尝试阅读有关调试 malloc 相关内容的内容。

于 2013-10-15T07:09:32.820 回答