2009-06-03 2 views
3

В настоящее время я разрабатываю iPhone-игру с множеством анимаций с использованием последовательностей изображений (jpg и png с прозрачными пленками). Используя инструменты для просмотра утечек и распределения объектов, я видел, что распределение объектов увеличивается до менее 500 тыс. Тем не менее, программа по-прежнему падает и неожиданно выходит из игры, когда мы переключаемся с одного уровня игры на другой. Это ненормально? Из того, что я читал, iPhone имеет 128 Мб памяти.Проблема с памятью с анимированными играми iPhone с использованием последовательностей изображений

Дополнительная информация: Мы используем CAKeyFrameAnimation (по рекомендации Apple) и imageNamed (чтобы изображения были предварительно кэшированы). В каждом объекте Level я вижу, что dealloc вызывается, когда я меняю один уровень и загружаю другой. Однако память, похоже, продолжает расти и подниматься и никогда не возвращается к исходному уровню. = (

+0

Я заметил в утечке, что использование памяти не сразу падает после выпуска UIImage. Может быть, есть внутренний кеш или что-то еще? Мне любопытно это выяснить. –

+0

Да, команда imageNamed должна кэшировать изображение, и это наша желаемая функциональность. Но умирать в 500 тыс. Кажется мне неправдой. Также было бы неплохо, если бы UIImages были полностью очищены после того, как мы выгрузили уровень. Как вы делаете анимацию в своем коде (если есть). Мы использовали свойство animationImages для UIImageView, но затем Apple сообщила, что это было ошибкой и никогда не было выпущено изображений. Они посоветовали нам использовать CAKeyframeAnimation. –

+0

На самом деле я не занимаюсь анимацией - просто показываю довольно большие изображения, загруженные из Интернета. На самом деле, я создаю образы с помощью imageWithData :, а не imageNamed:, поэтому я удивлен, что он делает любое кэширование в моем случае. –

ответ

1

Этот вопрос может быть полезны Dispelling imageNamed FUD.

Что касается iPhone, имеющие 128Мб вы можете проверить последние несколько постов в gamesfromwithin.com (Ноэль Llopis) относительно фактического объема оперативной памяти вы находитесь скорее всего, чтобы увидеть в вашем приложении (ОС/почта/IPOD приложения с помощью немного больше, чем ожидалось в настоящее время!)

+0

Приветствия, просто прочитайте эту страницу. Ах да, я действительно знал, что вы на самом деле не получаете все 128 МБ, чтобы играть. Из того, что я прочитал сегодня вечером, вы получите грубо 22 МБ. Получил ответ на другом форуме, и я могу использовать неправильные инструменты. Завтра выходим, чтобы проверить «память или инструменты активности». –

+0

Эта статья замечательная: http://gamesfromwithin.com/?p=428 –

+0

Btw, спасибо за ссылку barog. Просто протестирован с Монитором активности. Память была через крышу! 30MB + Это было с 36 кадрами изображений в полноэкранном режиме с использованием CAKeyFrameAnimation и imageWithContentsOfFile. Итак, я убил эту конкретную анимацию, и мы расследуем использование фильма с субвью, наложенным сверху на кнопки. Будет опубликовать результаты, когда мы их получим. –

0

вы можете использовать авторекламу для него и вызывать функцию явно, чтобы освободить неиспользуемый вид изображения, с помощью которого распределение изображений будет низким, и когда функция delloac будет вызвана, вы уже проделали определенную работу, переназначив их явно, поэтому, когда delloc вызовет это, freeup в основном из памяти попробуйте это.

спасибо

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

  • Нет связанных вопросов^_^