#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. Даже если я отключу просмотр и освобожу память, это не решит мою проблему. Но вы подаете мне хорошую идею, я могу отклонить представление и сказать пользователю: «проблема с памятью, закройте другую программу». Это более политично, и он может попробовать еще раз.