Я новичок в программировании (узнал, как писать приложения несколько месяцев назад), а недавно написал приложение, которое вылетает каждый раз примерно через 5 минут с несколькими 'Предупреждение о получении памяти. Предупреждения уровня = 1 '. Во время тестирования с помощью инструментов я не смог обнаружить никаких утечек, и я уверен, что правильно выпускаю объекты, поэтому я подозреваю, что проблемы с памятью связаны с большим количеством используемых мной png-изображений (около 80). Я попытался перейти от метода -imageNamed к -imageWithContentsOfFile и не видел реального улучшения. Если бы кто-нибудь мог предложить какие-либо советы, я бы очень признателен, потому что я полностью застрял.У моего приложения iphone проблемы с памятью и, в конечном счете, сбой - много изображений
ответ
Недостаточно памяти обязательно подразумевает утечку памяти. Это может означать, что вы попросили слишком много памяти сразу. В вашем случае вы, вероятно, пытаетесь создать слишком много объектов UIImage
, которые все существуют одновременно. Не видя намного больше своего кода, не так много сказать, кроме как попробовать и найти способ использовать меньше изображений одновременно.
Предположительно UIImage
s, которые вы загружаете с помощью imageNamed
, выгружаете их содержимое, если это возможно, если они получают предупреждения о памяти. UIImage Reference, see Images and Memory Management Это оставило бы только очень маленький пустой контейнер UIImage
. Поэтому я подозреваю, что у вас есть другая проблема.
Проверьте, нет ли какой-либо петли в вашей программе и убедитесь, что она каким-то образом не протекает.
также помните, что PNG на диске намного меньше соответствующего изображения в памяти. если ваши PNG большие, вы можете просто использовать слишком много памяти. возможно, вы можете задерживать изображения, чтобы уменьшить ваш размер.
- 1. Сбой приложения Ipad, проблемы с памятью
- 2. Проблемы с памятью IPhone
- 3. C++ программирование и в конечном счете Mobile
- 4. runOnUiThread вызывает замедление приложения и, в конечном счете, принудительное закрытие
- 5. Почему у моего Titanium приложения Android с TabGroup есть проблемы с памятью и производительностью?
- 6. Проблема с памятью приложения iPhone
- 7. iPhone - Проблемы с управлением памятью
- 8. сбой моего приложения [NSMutableArray1 removeAllObjects] iphone sdk
- 9. Почему у C/C++ проблемы с памятью?
- 10. Проблемы с памятью в разработке Android-приложения
- 11. Сбой моего приложения
- 12. Проблемы с памятью с UIimagePickercontroller в iPhone
- 13. Ruby: «сделать эту задачу в конечном счете»
- 14. о couchbase ер-двигатель по управлению памятью и в конечном счете настойчивый
- 15. Почему у меня проблемы с памятью?
- 16. Вызывает ли вызов fork() в конечном счете?
- 17. Управление памятью, много изображений в UICollectionView
- 18. Проблемы с памятью iPhone/iPad CGPDF
- 19. проблема с памятью iphone при загрузке изображений
- 20. Изображение анимация - проблемы с памятью
- 21. Минимальный размер приложения для моего приложения iphone?
- 22. Проблемы с памятью и памятью с R
- 23. Проблемы с памятью/потенциальные проблемы с памятью
- 24. Revmob сбой моего приложения
- 25. wsprintf() сбой моего приложения
- 26. camera.takePicture() сбой моего приложения
- 27. NSTimer сбой моего приложения
- 28. ABAddressBookGetPersonWithRecordID Сбой моего приложения
- 29. Сбой приложения iPhone с sqlite3_bind_text()
- 30. Меньше проблемы с CSS и локальной памятью
Спасибо за ответы! Я попытался немного сократить свое изображение, и я действительно не думаю, что я могу сократить, не уменьшая при этом качество приложения. Тем не менее, я все еще получаю предупреждения о памяти, а затем возможный сбой. Меня смущает то, что я не получаю сбой до 15-го уровня моей игры, и нет новых изображений, введенных между уровнями. Я все еще не нашел утечек (я использовал инструменты и NSZombiesEnabled), поэтому я не думаю, что это проблема. Может быть, я не подталкиваю своих контролеров прав или что-то еще? Я в тупик .... Еще раз спасибо за любую помощь. – mohabster1928
Не было смысла «NSZombies», что память на самом деле не была возвращена, поэтому зомби может жаловаться, что ее называют после официального dealloc? Это объясняет предупреждения памяти. Способ решения этого класса проблем состоит в том, чтобы поместить некоторый фрагмент кода в цикл, например. сделайте * тот же самый уровень 100 раз и посмотрите, увеличивается ли объем памяти с каждым раз, когда вы делаете тот же уровень. – mvds