是否可以调试"由于内存错误而终止"?

San*_*aus 74 memory-management objective-c ios automatic-ref-counting

在我的应用程序运行时的某个(一致)点,我一直收到xcode错误消息

由于内存错误而终止.

我找不到导致错误的代码,但我可以告诉错误附近的代码(使用断点).

在我的实现中返回某个单元格后直接导致错误

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

UITableViewDataSource委托方法.我可以确认它返回有效UITableViewCell,但我认为解释和发布整个方法将浪费你的时间.但是,我怀疑它可能是由快速,大量的内存分配引起的.

它肯定说Terminated due to memory error,而不是记忆压力.

我想知道什么是信息真的意味着什么.另外,有没有办法调试此消息?没有生成崩溃报告.

我正在使用ARC和iOS 7.

zir*_*isp 53

我收到了这个错误,无法理解错误.

经过一番搜索,我发现我忘了禁用僵尸.

要禁用,请执行以下操作:

选择编辑方案

取消选择

  • 当僵尸被启用时,一切都会受到影响,因为对象没有被释放.在表视图的情况下,这会很快填满内存,其中很多东西都被分配和释放.启用僵尸的定义:使用"僵尸"对象替换解除分配的对象,该对象捕获任何使用它的尝试.当您向僵尸对象发送消息时,运行时会记录错误并崩溃.您可以查看回溯以查看触发僵尸探测器的调用链. (5认同)
  • 尽管如此,我仍然面临这个问题。请指导我。 (2认同)

小智 10

我遇到了同样的问题.("因内存错误而终止")我尝试了上述所有答案,但对我来说没什么用.然后我调试我的代码,发现一个for循环运行无限时间,每次都将内存分配给一个nil值的数组.使用300 + MB所以它给出了这个错误

谢谢.


Tom*_*oka 5

我有完全一样的问题。我以为这导致我的程序内存泄漏或使用了太多内存。我使用工具,并使用分配配置文件和程序可以正常工作。我也通过设备运行了足够长的程序,它也可以正常工作。

我也使用iPad 3rd Gen进行调试,这可能是由于设备或错误的缓慢造成的,似乎只是Xcode并从Xcode运行而引起的问题。不是内存泄漏或分配问题。

如果您确定仪器本身并在设备上运行应用并正常工作

  • 使用NSURLSession下载整堆图像时,我遇到类似的问题。模拟器和独立设备(iPhone 6)正常运行。在仪器中,分配图看起来也很平滑。也不要崩溃。当我将设备连接到xCode时出现问题。无论构建配置(调试还是发布)。总是以神秘的“内存错误”结尾。 (3认同)

Yas*_*ala 5

我使用Tesseract进行OCR,当我的目标文本被扫描时,应该播放GIF。当GIF开始播放时,内存从70-80MB增加到450MB。问题是GIF占用了过多的内存,该应用程序将崩溃并且Xcode将显示该消息。因此,我从ViewController的超级视图中删除了相关的imageView。

imageView.removeFromSuperview
Run Code Online (Sandbox Code Playgroud)

在此之后,该应用程序仍会达到450MB的峰值,然后立即释放并降至40MB


Ofi*_*chi 5

重新启动设备对我有用。\xe2\x80\x9c由于内存错误而终止\xe2\x80\x9d 消息停止出现。

\n


Lea*_*s2D 2

编辑方案,在“诊断”下,您将找到几个保护分配的选项。详细信息请参阅文档

问题是:它真的说“由于内存错误而终止”而不是“压力”吗?检查仪器是否您的应用程序内存不足,如果应用程序确实内存不足,那么无论确切的消息是什么,您都应该关注这一点。