2012-02-17 4 views
0

В моем приложении я попытался создать [NSData initWithContentsOfFile]. В ios4 (ipod gen 3) nsdata создается без ошибок. Но в ios5 (ipod gen 4) приложение разбилось. Я думаю, что ipod 4 имеет 512 МБ ОЗУ, а ipod 3 - 256 МБ, поэтому почему не удается создать данные.Как увеличить ограничение памяти ios5

+0

максимальный размер файла? –

+0

Вы посмотрели журналы аварии? –

+0

Вы имеете в виду, что он разбился, когда у вас была двойная оперативная память? – mbh

ответ

0

Просто потому, что у устройства больше ОЗУ, это не означает, что вы автоматически получите больше оперативной памяти в своем приложении. iOS использует память как можно более эффективно, и есть ряд причин, по которым она может упасть на ваше устройство iOS 5, например, iOS 5 скорее всего использует больше оперативной памяти, чем iOS 4. Затем у вас было такое же количество открытых/фоновых приложений работает на обоих устройствах? Вы также можете указать, сколько свободного места доступно для вашего приложения с помощью инструментов. Следите за этим. Если у вас не хватает памяти, единственным решением будет использование меньше памяти.

+0

У Ipod3 есть больше приложений, работающих на фоне, чем Ipod4. Мое приложение загружает изображения размером 3 тыс. * 2 тыс. Таким образом, доступная память составляет ~ 30 мб. Когда процессу нравится действие сохранения в фотоальбоме, память увеличивается до ~ 70 мб, появляется предупреждение о сбоях и сбое памяти. – 9891541

+0

Yup. ~ 70mb определенно просит crash - на любом устройстве. Угадайте, что вам больше повезло на iPod 3. –

+0

: D. Возможно! http://stackoverflow.com/questions/6044147/memory-limit-and-io s-память Перераспределение-в-iphone-SDK. Во всяком случае, я делаю свое приложение, избегая большого ввода данных. Благодаря! – 9891541

1

Это ограничение по какой-либо причине - ресурсы, которые вы хотите, просто не соответствуют дизайну системы.

Посмотрите, можете ли вы указать mmap файл. man mmap

NSData также поддерживает отображение файла с использованием пользовательских параметров чтения, см. +[NSData dataWithContentsOfFile:options:error:].

+0

Извините. Не ясно о карте человека. Но я использовал fread для чтения данных изображения (3k x 2k) .Too большой, но ipod3 работает без ошибок. И у меня есть память управления наилучшим образом. Создать NSData - это мой тестовый пример для проверки предельной памяти. – 9891541

+0

это 'man mmap', с двумя« m »в mmap. ответ расширен – justin

+0

Ах. Я знаю, NSData поддерживает отображение файла. Но вы использовали сопоставленный файл с [NSData getBytes]? Я предполагаю, что это делает утечку памяти. В любом случае я создал объект MyData и использовал fread для чтения данных по страницам. Благодаря! – 9891541

Смежные вопросы