2012-06-05 2 views
1

Можно ли перечислять все живые узлы (действия и анимации, представляющие для меня интерес) в приложении Cocos2D?Список всех живых узлов/действий/анимаций в приложении Cocos2D

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

ответ

1

Вы можете рекурсивно перечислить все дочерние узлы. Стартовый узел будет вашей сценой. Для действий я знаю, что вы можете получить количество действий для данного узла, но я не знаю, можно ли каким-либо образом перечислить все действия.

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

Чтобы предотвратить утечку памяти путем планирования некоторых действий на узле, которые вы хотите удалить из родителя, отправьте сообщение cleanup всем узлам перед удалением из родителя. Или, если это экземпляр вашего класса, сделайте [self cleanup]; в его методе onExit().

Я не думаю, что вы можете получить список всех созданных узлов. Это похоже на сбор мусора в .net =) В объективе-C вы должны следить за просочившимися объектами самостоятельно.

+1

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

+0

обновил мой пост – Morion

+0

благодарю вас за ответ. – Bobrovsky

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