Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Cocos2d:有没有办法知道哪些图像仍然加载到内存中?_Ios_Cocos2d Iphone - Fatal编程技术网

Ios Cocos2d:有没有办法知道哪些图像仍然加载到内存中?

Ios Cocos2d:有没有办法知道哪些图像仍然加载到内存中?,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我正在使用Cocos2d 2.0和XCode 4.5.2,我确实想知道如何检测哪些精灵表/图像在特定时间仍在内存中。 例如: 在场景中,我加载images.pvr.ccz spritesheet,然后调用replaceSecene加载场景2。在Scene2运行时,我想看看images.pvr.ccz是否仍在内存中作为 我应该使用一些工具还是应该在纹理缓存相关类中添加一些断点 我确实将图像添加到帧缓存中,如下所示: [[CCSpriteFrameCache sharedSpriteFrameCa

我正在使用Cocos2d 2.0和XCode 4.5.2,我确实想知道如何检测哪些精灵表/图像在特定时间仍在内存中。

例如: 在场景中,我加载images.pvr.ccz spritesheet,然后调用replaceSecene加载场景2。在Scene2运行时,我想看看images.pvr.ccz是否仍在内存中作为

我应该使用一些工具还是应该在纹理缓存相关类中添加一些断点

我确实将图像添加到帧缓存中,如下所示:

 [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"images.plist"];
        batchNode = [CCSpriteBatchNode batchNodeWithFile:@"images.pvr.ccz"];
        [self addChild:batchNode]; 

其他详细信息-不需要 我有以下几点体会:每次替换场景时,内存都会增加“x”MB,这可能与精灵表的大小相对应

我在每个场景的init方法中添加了这些调用,但是内存仍在增加:

    [CCAnimationCache purgeSharedAnimationCache];
    [CCShaderCache purgeSharedShaderCache];
    [[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];
使用此调用查看此时哪些纹理加载到内存中。此外,如果要删除未使用的纹理,请使用

[[CCTextureCache sharedTextureCache] removeUnusedTextures];

我真的不明白。我添加了调用,得到了1个8MB使用量的纹理,但是,查看驻留内存信息,我每次加载场景时都会增加8MB(因此每次都会以某种方式重新加载纹理)。我迷路了(纹理只加载到内存中一次。你确定你的内存是因为纹理而泄漏的吗?没有加载大量数据、声音或其他内容?我添加了一个CCLOG来打印dumbInfo上的textKey,上一个场景的spritesheet被缓存。我想这应该可以解释内存增加的部分原因。但是我没有不知道如何强制删除。请确保在替换场景后,上一场景中的所有对象都已销毁。我添加了“[[CCTextureCache sharedTextureCache]removeAllTextures];”纹理表被移除了,但是内存保持不变。我想这需要像u在第二条评论中建议的那样调查其余部分。
[[CCTextureCache sharedTextureCache] removeUnusedTextures];