81

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

由于内存错误而终止。

我找不到导致错误的代码,但我可以知道错误附近的代码(使用断点)。

该错误是在我的实现中返回某个单元格后直接引起的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

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

它肯定说Terminated due to memory error,不是内存压力。

我想知道消息的真正含义是什么。另外,有没有办法调试这个消息?不会生成崩溃报告。

我正在使用ARC和 iOS 7。

4

12 回答 12

57

我收到了这个错误,无法理解出了什么问题。

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

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

选择编辑方案

取消选择

于 2014-05-19T14:55:52.030 回答
11

我遇到了同样的问题。(“由于内存错误而终止”)我已经尝试了以上所有答案,但对我没有任何帮助。然后我调试我的代码,发现一个 for 循环正在运行无限时间,每次都将内存分配给一个具有 nil 值的数组。它使用 300+MB 所以它给出了这个错误

谢谢。

于 2016-04-14T07:09:48.147 回答
7

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

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

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

于 2013-11-11T07:28:08.620 回答
6

我正在使用 Tesseract 进行 OCR,当我的目标文本被扫描时,应该播放 GIF。当 GIF 开始播放时,内存出现峰值,从 70-80MB 到 450MB。问题是 GIF 占用了太多内存,应用程序会崩溃,Xcode 会显示该消息。所以我从 ViewController 的父视图中删除了相关的 imageView。

imageView.removeFromSuperview

在此之后,应用程序仍会飙升至 450MB,但随后立即释放并降至 40MB

于 2017-01-11T12:05:42.243 回答
5

重启设备对我有用。“因内存错误而终止”消息停止出现。

于 2019-06-20T12:28:19.683 回答
2

编辑方案,在诊断下你会发现几个保护分配的选项。有关详细信息,请参阅文档

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

于 2013-10-06T00:34:34.247 回答
2

我收到此错误是因为我将全尺寸照片添加到大小为 40x40 的 collectionView 单元格中。阅读@matt 问题下的2 条评论。在将它们添加到单元格之前,我必须缩小图像。

于 2020-09-13T20:31:50.067 回答
1

我在Xcode 11.3中遇到了类似的问题,每次按下重试按钮时,相机都会被调用。如果这些操作多次执行,则会发生崩溃。

当我们禁用 Zombie 对象时,此问题已得到修复。以下是步骤:

  1. 点击左上角的项目名称。这将显示项目中存在的目标列表。
  2. 点击编辑方案

截图-1

  1. 选择运行选项 -> 诊断 -> 取消选中僵尸对象。

截图-2

现在,运行您的项目。它应该可以正常工作。

于 2020-03-04T05:58:15.890 回答
0

我注意到的是,当我通过电缆在设备上运行我的应用程序并让它长时间闲置时,我也会收到该错误。

Apple 确实解决了这个问题,它可能只是感觉该应用程序处于空闲状态并且只是将其杀死。

于 2020-07-20T00:25:37.417 回答
0

就我而言,它是来自 API 的损坏图像,由于在屏幕上显示所需的处理大小,我的内存从 100MB 提高到 4.5 GB!

于 2021-03-24T13:12:38.280 回答
0

使用 Xcode 11,它以Debug模式启动了我的项目。我正在做一些图像记录/编辑/返回给用户,这不是你可以在Debug. 一旦我打开Release模式,一切都很顺利。

于 2020-01-11T08:02:30.817 回答
0

由于注意力不集中,我遇到了这种问题。

我一直在调用一个函数,它将 imageView 添加为子视图:

override func layoutSubviews() {
    super.layoutSubviews()
}

这导致了巨大的内存使用,所以要注意这种事情!

于 2020-02-10T12:50:47.977 回答