Предупреждение: получено предупреждение о памяти. Уровень=1 и 2

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

Есть два спрайта.

  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 и атласа текстур.
Когда поезд уходит и возвращается, plist и атлас текстур для изменения анимации. Но после 4 или 5 раз приложение вылетает. Я также удалил все кадры и текстуры до того, как в AlphaImage появилась новая анимация. Я использовал это:

[CCSpriteFrameCache purgeSharedSpriteFrameCache];  
[CCTextureCache purgeSharedTextureCache];   

Я использую hd-изображения для приложения. Я просмотрел много документов, они предложили следующее:

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

Но в консоли ничего не показывает об удалении фреймов с помощью этих строк. Есть ли что-то, что я делаю неправильно?


person user392406    schedule 14.04.2011    source источник


Ответы (2)


Где вы используете [[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames]; этот оператор, запустите фоновый поток, используя метод PerformSelectorInBackground NSObject.

person Inder Kumar Rathore    schedule 14.04.2011
comment
В моем методе AllReset у меня есть код анимации (выше кода), и до этого я вызываю метод removeUnused, который содержит этот код. - person user392406; 14.04.2011
comment
обратитесь к этой странице для PerformSelectorInBackground — blog.datispars.com/ - person nishantcm; 14.04.2011
comment
PerformSelectorInBackground не отвечает на селектор, он зацикливается. - person user392406; 15.04.2011

Попробуйте освободить массив после окончания анимации.

//Это может быть причиной.

[animFrames1 release];
animFrames1 = nil;
person Anish    schedule 15.04.2011