2010-07-19 1 views
1

Я новичок в программировании (узнал, как писать приложения несколько месяцев назад), а недавно написал приложение, которое вылетает каждый раз примерно через 5 минут с несколькими 'Предупреждение о получении памяти. Предупреждения уровня = 1 '. Во время тестирования с помощью инструментов я не смог обнаружить никаких утечек, и я уверен, что правильно выпускаю объекты, поэтому я подозреваю, что проблемы с памятью связаны с большим количеством используемых мной png-изображений (около 80). Я попытался перейти от метода -imageNamed к -imageWithContentsOfFile и не видел реального улучшения. Если бы кто-нибудь мог предложить какие-либо советы, я бы очень признателен, потому что я полностью застрял.У моего приложения iphone проблемы с памятью и, в конечном счете, сбой - много изображений

+0

Спасибо за ответы! Я попытался немного сократить свое изображение, и я действительно не думаю, что я могу сократить, не уменьшая при этом качество приложения. Тем не менее, я все еще получаю предупреждения о памяти, а затем возможный сбой. Меня смущает то, что я не получаю сбой до 15-го уровня моей игры, и нет новых изображений, введенных между уровнями. Я все еще не нашел утечек (я использовал инструменты и NSZombiesEnabled), поэтому я не думаю, что это проблема. Может быть, я не подталкиваю своих контролеров прав или что-то еще? Я в тупик .... Еще раз спасибо за любую помощь. – mohabster1928

+1

Не было смысла «NSZombies», что память на самом деле не была возвращена, поэтому зомби может жаловаться, что ее называют после официального dealloc? Это объясняет предупреждения памяти. Способ решения этого класса проблем состоит в том, чтобы поместить некоторый фрагмент кода в цикл, например. сделайте * тот же самый уровень 100 раз и посмотрите, увеличивается ли объем памяти с каждым раз, когда вы делаете тот же уровень. – mvds

ответ

0

Недостаточно памяти обязательно подразумевает утечку памяти. Это может означать, что вы попросили слишком много памяти сразу. В вашем случае вы, вероятно, пытаетесь создать слишком много объектов UIImage, которые все существуют одновременно. Не видя намного больше своего кода, не так много сказать, кроме как попробовать и найти способ использовать меньше изображений одновременно.

0

Предположительно UIImage s, которые вы загружаете с помощью imageNamed, выгружаете их содержимое, если это возможно, если они получают предупреждения о памяти. UIImage Reference, see Images and Memory Management Это оставило бы только очень маленький пустой контейнер UIImage. Поэтому я подозреваю, что у вас есть другая проблема.

Проверьте, нет ли какой-либо петли в вашей программе и убедитесь, что она каким-то образом не протекает.

0

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

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