警告:收到内存警告。等级= 1& 2

时间:2011-04-14 05:08:36

标签: memory-management cocos2d-iphone didreceivememorywarning

我正在制作崩溃的应用程序,在控制台中发出上述警告。

有两个精灵。

  Train=[CCSprite spriteWithFile:@"train.png"];
    [self addChild:train z:0 tag:1];

  AlphaImage=[CCSprite node];
    AlphaImage.position=ccp(245,155);
    [Train addChild:AlphaImage z:1 tag:2];

在其他方法中,我使用动画初始化AlphaImage。

CCSpriteFrameCache *frameCache1 =[CCSpriteFrameCache sharedSpriteFrameCache];   
[frameCache1    addSpriteFramesWithFile:plist1];                                
CCSpriteBatchNode *danceSheet1 = [CCSpriteBatchNode batchNodeWithFile:png1];    
[self addChild:danceSheet1];                                

NSMutableArray *animFrames1 = [NSMutableArray arrayWithCapacity:frame[x]];      
for(int i = 1; i < frame[x]+1; i++) {
    NSString *namef1=[NSString stringWithFormat:@"%@%i.png",alpha1,i];              
    CCSpriteFrame *frame1 = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:namef1];   


    [animFrames1 addObject:frame1];
}

CCAnimation *anim1 = [CCAnimation animationWithFrames:animFrames1 delay:0.3f]; 
CCAnimate *animN1 = [CCAnimate actionWithAnimation:anim1];                      
CCRepeatForever *repeat1 = [CCRepeatForever actionWithAction:animN1];                   
[AlphaImage runAction:repeat1];     

我用zwoptex创建了plist和Texture atlas 当火车进入并返回时,plist和Texture atlas用于动画更改。但经过4到5次应用程序崩溃后。在新动画发布到AlphaImage之前,我还解除了所有帧和纹理的影响。我使用了这个:

[CCSpriteFrameCache purgeSharedSpriteFrameCache];  
[CCTextureCache purgeSharedTextureCache];   

我正在使用高清图像进行应用。我已经阅读了很多文档,他们已经建议了这些:

[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];

但是在控制台中,它没有显示使用这些线删除帧的任何信息。 有什么我做错了吗?

2 个答案:

答案 0 :(得分:1)

你在哪里运行[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];这个语句使用NSObject的performSelectorInBackground方法运行后台线程。

答案 1 :(得分:0)

尝试在动画结束后释放数组。

//这可能是原因。

[animFrames1 release];
animFrames1 = nil;