Я бы установил точку останова в [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]
. Надеюсь, что все улучшится.