Подтвердить что ты не робот

Можно ли отлаживать "Завершение из-за ошибки памяти"?

В определенной (последовательной) точке, когда мое приложение работает, я последовательно получаю сообщение об ошибке xcode

Завершена из-за ошибки памяти.

Я не могу найти код, вызывающий ошибку, но я могу сказать, какой код близок к ошибке (используя контрольные точки).

Ошибка вызвана непосредственно после возврата определенной ячейки в моем выполнении

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

UITableViewDataSource метод делегата. Я могу подтвердить, что он возвращает действительный UITableViewCell, но я думаю, что объяснение и публикация всего этого метода были бы пустой тратой времени. Однако я подозреваю, что это может быть вызвано быстрым, массивным распределением памяти.

Он определенно говорит Terminated due to memory error, а не давление памяти.

Я хотел бы знать, что означает сообщение. Кроме того, есть ли способ отладить это сообщение? Отчет о сбоях не генерируется.

Я использую ARC и iOS 7.

4b9b3361

Ответ 1

Я получал эту ошибку и не мог понять, что не так.

После некоторых поисков я узнал, что забыл отключить зомби.

Чтобы отключить, выполните следующие действия:

Select edit scheme

Deselect "Enable Zombie Objects

Ответ 2

Я столкнулся с той же проблемой. ( "Завершение из-за ошибки памяти" ) Я пробовал все вышеперечисленные ответы, но ничего не работает для меня. Затем я отлаживаю свой код и обнаружил, что цикл for работает в течение бесконечности с распределением памяти на массив с нулевым значением каждый раз. Он использует 300 + МБ, поэтому он дает эту ошибку

Спасибо.

Ответ 3

У меня была точно такая же проблема. Я думал, что это вызвало у моей программы утечку памяти или использование слишком большой памяти. Я использую инструменты и использую распределяющий профиль, и программа работает нормально. Кроме того, я запускал программу по устройству достаточно долго, и он также отлично работает.

Я также использую iPad 3-го поколения для отладки, это может быть причиной из-за этого медленного устройства или ошибки, похоже, что это просто Xcode и работает от проблемы Xcode. Не проблема утечки или распределения памяти.

Если вы убедитесь, что инструменты и приложение на самом устройстве и работают

Ответ 4

Я использовал Tesseract для OCR, и когда мой целевой текст получил сканирование, должен был играть GIF. Когда GIF начал играть, был всплеск памяти от 70-80MB до 450MB. Проблема заключалась в том, что GIF забрал слишком много памяти, приложение будет разбиваться, и Xcode покажет это сообщение. Поэтому я удалил соответствующий imageView из супервизора ViewController.

imageView.removeFromSuperview

После этого приложение по-прежнему будет увеличиваться до 450 МБ, а затем сразу же освободится и спустится до 40 МБ

Ответ 5

Измените схему, в разделе "Диагностика" вы найдете несколько вариантов защиты распределений. Подробнее см. в документации.

Вопрос: действительно ли это говорит "прекращено из-за ошибки памяти", а не "давление"? Проверяйте инструменты, если ваше приложение работает на низком уровне в памяти, если приложение, похоже, работает на низком уровне, а затем на то, на что вы должны сосредоточиться, независимо от того, что такое точное сообщение.

Ответ 6

Перезапуск устройства работал у меня. Сообщение "Прервано из-за ошибки памяти" перестало появляться.