Разработка для iOS: Какими способами я могу устранить проблему с задержкой в ​​моей игре, которая возникает через 15-30 минут после игры? - PullRequest
2 голосов
/ 02 декабря 2010

Я создаю игру-головоломку для iOS, чтобы познакомиться с платформой, и некоторые из моих тестеров замечают серьезную проблему задержки, которая возникает периодически через 15-30 минут после игры, и задержка, кажется, не связана с любой конкретной частью игры. Я протестировал приложение с помощью инструмента «Утечки» и пока не обнаружил никаких утечек.

  1. Что может вызвать мгновенное отставание игры после некоторого времени игры?
  2. Какие методы / инструменты я мог бы использовать для устранения задержки?

Большое спасибо за вашу мудрость!

ОБНОВЛЕНИЕ: Как новый разработчик iOS, у меня сложилось впечатление, что инструмент Leaks сообщит по крайней мере о большинстве утечек моей памяти, поэтому мне было очень приятно поверить, что мое приложение правильно управлял памятью, когда не сообщалось об утечках. Не тот случай! После нескольких предложений, размещенных здесь, я посмотрел несколько видео о том, как использовать инструмент Allocations, и обнаружил, что мое приложение теряет тонну памяти со временем и, потратив около двух часов, просматривая ВСЕ мой код и исправляя память кода, моя игра больше не отстает и не сообщает о потере памяти или утечках памяти. Спасибо всем!

Ответы [ 5 ]

2 голосов
/ 02 декабря 2010

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

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

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

2 голосов
/ 02 декабря 2010

проверьте, если вы получаете предупреждение памяти. Кроме того, попробуйте использовать инструмент «кучная дробь» в инструментах, поскольку что-то может удерживать ссылку и препятствовать освобождению объектов, это не проявляется как стандартная утечка. я бы определенно взглянул на инструмент выделения объектов и следил за объектами, которые еще живы.

Если вы не очень часто пользовались инструментами, я думаю, что у Apple есть несколько видео на сайте разработчиков, которые их просматривают.

1 голос
/ 02 декабря 2010

УТЕЧКИ - это НЕ то же самое, что чрезмерное выделение памяти.

Звучит так, будто вы просто не выпускаете вещи, которые больше не нужны, иВы тратите максимум памяти и порций.

Проверьте свои ассигнования и следите за тем, что продолжает расширяться, когда не должно.

1 голос
/ 02 декабря 2010

У меня были похожие отзывы, когда батарея разряжалась.Таким образом, вы можете проверить, воспроизводит ли проблема, когда устройство включено или нет.

Кроме того, вы используете openGL в своей игре?Я спрашиваю, потому что я наблюдал некоторые лаги с отображением текстур, появляющихся впервые, хотя эти текстуры были предварительно загружены и кэшированы.

И последний вопрос, с какими устройствами работают ваши тестеры?

1 голос
/ 02 декабря 2010

Вы используете утечки с симулятором или с реальным телефоном? Я обнаружил, что симулятор дает отличные результаты, чем телефон при запуске утечки. Исходя из вашего описания, звучит так, как будто произошла утечка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...