Cocos2d iphone 无法清理场景之间的缓存?

Cocos2d iphone 无法清理场景之间的缓存?,cocos2d-iphone,Cocos2d Iphone,我在cocos2d中提到了一件奇怪的事情 在游戏场景和菜单场景的初始化中,我将帧缓存plist和精灵表加载到缓存中 我发现,如果在我的游戏场景中,我使用以下方法清理缓存: [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames]; [[CCTextureCache sharedTextureCache] removeAllTextures]; 所以,当我将场景替换到菜单,然后返回游戏时,他不会再次加载缓存,因

我在cocos2d中提到了一件奇怪的事情

在游戏场景和菜单场景的初始化中,我将帧缓存plist和精灵表加载到缓存中

我发现,如果在我的游戏场景中,我使用以下方法清理缓存:

  [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
     [[CCTextureCache sharedTextureCache] removeAllTextures];
所以,当我将场景替换到菜单,然后返回游戏时,他不会再次加载缓存,因此会出现错误,无法找到所需的帧

因此,似乎我只能在每个场景中将帧加载到缓存中一次,如果我将其删除并返回到场景中,它就不会再次加载并出现错误

反之亦然,如果我清理菜单场景中的缓存,转到游戏并返回菜单,则菜单场景也不会加载缓存,并且找不到所需的帧

这很有趣。这有什么原因吗?还是我错了


非常感谢。

如果将场景从oldScene更改为newScene,事件顺序如下:

  • newScene:init
  • 旧场景:Dealoc
  • 因此,如果在init中加载精灵帧,并清除前一场景的dealloc中的缓存,精灵帧将在新场景中不可用

    最好的选择是在使用新场景调用replaceSecene之前清除缓存