didReceiveMemoryWarning не вызывается до сбоя памяти - PullRequest
0 голосов
/ 04 мая 2011

Я загружаю пару больших CSV-файлов, когда мое приложение загружается в первый раз, и это прекрасно работает на симуляторе, но при работе на моем телефоне оно вылетает примерно на 30% из-за сообщения «Программа получила сигнал« 0 » ', что подразумевает сбой памяти. Однако, когда я помещаю точку останова в событие didReceiveMemoryWarning, оно, похоже, не вызывается.

Я что-то упустил или программа нормально завершит работу без вызова события?

Ответы [ 2 ]

1 голос
/ 04 мая 2011

Если вы загружаете файл во время синхронного вызова в главном потоке вашего приложения, это помешает ему получать другие сообщения (например, предупреждения о памяти) до завершения синхронного вызова. Попробуйте сделать загрузку файлов CSV асинхронной задачей. (Хорошей отправной точкой будет чтение по NSOperation.) Это позволит вашему приложению получать предупреждения памяти во время процесса загрузки.

0 голосов
/ 04 мая 2011

Что произойдет, если вы попытаетесь загрузить небольшой CSV вместо этого. Если он работает нормально, значит, ваш CSV слишком велик и вызывает проблемы с памятью. Если это так, возможно, вам придется прочитать порцию файла csv по порции и освободить память старого, прежде чем читать новый.

...