Ошибка подтверждения в - [CCSprite setTexture:] - PullRequest
0 голосов
/ 25 июня 2011

У меня проблема с приложением cocos2d для IPhone, которое я разрабатываю.Пролом выходит иногда во время смены сцены.Приложение зависает, и консоль начинает печатать этот оператор:

Ошибка подтверждения в - [CCSprite setTexture:]

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

Заранее спасибо

... через несколько часов: проблема возникает после предупреждения памяти.Поэтому это происходит из-за спрайтового кэша, который очищается, когда анимация использует кэшированный атлас текстур и связанный лист.Что я могу сделать, чтобы справиться с этим?

1 Ответ

2 голосов
/ 25 июня 2011

Я бы установил точку останова в [CCSprite setTexture:] и оттуда проверил трассировку стека и вернулся бы к вашему вызову. Конечно, это будет успешным только в случае сбоя.

В моей установке cocos2d (0.9.5) утверждения в setTexture могут быть:

NSAssert( ! usesBatchNode_, @"CCSprite: setTexture doesn't work when the sprite is rendered using a CCSpriteBatchNode");

// accept texture==nil as argument
NSAssert( !texture || [texture isKindOfClass:[CCTexture2D class]], @"setTexture expects a CCTexture2D. Invalid argument");

То есть вы делаете что-то из этого неправильно.

РЕДАКТИРОВАТЬ после вашего комментария:

ваш appDelegate определяет предположительно:

 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[CCDirector sharedDirector] purgeCachedData];
 }

попробуйте использовать:

[[CCTextureCache sharedTextureCache] removeUnusedTextures];

вместо [[CCDirector sharedDirector] purgeCachedData]. Надеюсь, что все улучшится.

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