Каковы некоторые из лучших способов оптимизации приложения Titanium? - PullRequest
3 голосов
/ 02 февраля 2012

У меня есть iOS-приложение на основе титана, которое в основном соответствует моей собственной структуре MVC.Он имеет около 30 представлений и множество сетевых подключений для выполнения вызовов API.Таким образом, кажется, что приложение работает предположительно вяло на реальном устройстве, кроме iPhone4S.В частности, приложение будет зависать в течение 10 секунд после его повторного запуска из многозадачного меню.Любые советы?

1 Ответ

5 голосов
/ 05 февраля 2012

Вам в основном нужно заботиться о утечках памяти. У вас есть ОЧЕНЬ важная веб-трансляция на эту тему. Короче; будьте очень осторожны с:

  • избегайте больших глобальных объектов: у них есть ссылки на мир, поэтому эти ссылки не будут очищены
  • устраните все циклические зависимости: сборщик мусора НЕ является сборщиком мусора! Он просто считает ссылки и убивает объекты, когда есть 0 ссылок. Для круглых объектов всегда есть 1 ссылка.
  • Избегайте событий на Ti.App: ой, что отстой! Но объект, который запрашивает addEventListener, навсегда находится в шине слушателя Ti.App. Шина хранит ссылку для отправки события этому объекту, поэтому она будет там всегда, как и ее ссылки.
  • Будьте осторожны с другими событиями.
  • Также будьте осторожны с анимацией: у них есть обратные вызовы, которые имеют ссылки на приложение. Эти обратные вызовы являются функциями (так переменными), которые могут оставаться в памяти, как и их ссылки.

Короче говоря, ваше приложение должно быть как можно ближе к простому дереву без обратной ссылки. Напишите myDownObject = null, когда вы поднимаетесь по дереву. Используйте HEAVILY Instruments на своем Mac с фильтром Proxy. Все титановые объекты являются UIProxy.

...