Я освобождаю всю память, которую могу, но моей программе нужно больше, что я могу сделать?

#iphone #objective-c #ios #memory #memory-management

#iPhone #objective-c #iOS #память #управление памятью

Вопрос:

Это философский вопрос. Моя программа отправляет сообщение, которому требуется больше памяти. Я освобождаю всю память, которую могу, чтобы она продолжала работать правильно. Но программе снова говорят, что нужно больше памяти, а мне некого освобождать. Что мне теперь делать?

Это почти происходит, когда я использую камеру с библиотекой ZBar, поэтому у меня нет контроля с помощью ZBar (я не могу освободить ее память, только свою). И для этого действительно нужно много памяти для работы. Из-за этого я не знаю, что мне делать.

Программа не завершилась сбоем, но может работать нестабильно.

Комментарии:

1. Что за приложение вы пишете. Следующим логическим шагом было бы начать оптимизацию памяти. Начните использовать массивы C вместо NSArrays и используйте структуры вместо объектов. Если вам абсолютно необходимо, вы можете кэшировать на диске / флэш-памяти.

2. Я обновляю ее. Было нехорошо не показывать, когда это почти происходит.

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

Ответ №1:

Без более подробной информации о вашей проблеме ваши ответы будут расплывчатыми 🙂

Очевидный ответ — использовать меньше памяти.

Зависит ли это от того, для чего вы используете память, но вы могли бы поместить ее в файл на диске и считывать только те данные, которые вам нужны?

Вам также следует проверить наличие утечек — возможно, вы используете память, не осознавая этого.

Если вы опубликуете больше информации о вашей конкретной проблеме, мы, вероятно, могли бы помочь больше.

Комментарии:

1. Лол, сори. Я редактирую и показываю больше. Проблема в том, что это происходит, когда я использую камеру с библиотекой, а не с файлом. Из-за этого, я думал, больше не нужно освобождать память.

2. Итак, файл не может вам сильно помочь. Предполагая, что вы имеете в виду, что используете ZBarReaderViewController тогда, когда вы вызываете dismissModalViewController, он должен освободить всю свою память?

3. Ну, мне нужна память для запуска ViewController. Даже если я отключу просмотр и освобожу память, это не решит мою проблему. Но вы подаете мне хорошую идею, я могу отклонить представление и сказать пользователю: «проблема с памятью, закройте другую программу». Это более политично, и он может попробовать еще раз.