私の@Monsterクラスには、3種類のウォークアニメーションがあります。CCAnimationとCCAnimateリーク?
"Monster.h"
@interface Monster : CCSprite{
CCAction *fWalk;
CCAction *bWalk;
CCAction *hWalk;
}
@property (nonatomic, retain) CCAction *fWalk;
@property (nonatomic, retain) CCAction *bWalk;
@property (nonatomic, retain) CCAction *hWalk;
"Monster.m"
+ (id) monsterInit...
{
Monster *sprite = ...// initialization
NSMutableArray *frameArray = [NSMutableArray array];
for (int i = 0; i < 3; i++) {
NSString *fileName = [NSString stringWithFormation:@"%d.png", i];
[frameArray addObject[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:fileName]];
}
CCAnimation *walk = [CCAnimation animationWithFrames:frameArray delay:0.1f];
self.fWalk = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walk restoreOriginalFrame:NO]];
[frameArray removeAllObjects];
for (int i = 3; i < 6; i++) {
NSString *fileName = [NSString stringWithFormation:@"%d.png", i];
[frameArray addObject[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:fileName]];
}
walk = [CCAnimation animationWithFrames:frameArray delay:0.1f];
sprite.bWalk = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walk restoreOriginalFrame:NO]];
[frameArray removeAllObjects];
for (int i = 6; i < 9; i++) {
NSString *fileName = [NSString stringWithFormation:@"%d.png", i];
[frameArray addObject[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:fileName]];
}
walk = [CCAnimation animationWithFrames:frameArray delay:0.1f];
sprite.hWalk = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walk restoreOriginalFrame:NO]];
return sprite;
}
- (void) dealloc
{
[fWalk release];
[bWalk release];
[hWalk release];
[super dealloc];
}
私は、パフォーマンスツールで、このアプリを実行すると - 漏れ。 "CCAnimation * walk ..."、 "self.fWalk ..."、 "walk = ..."、 "self.bWalk ..."、 "walk = ..."、 "self" .hWalk .. "はメモリリークを引き起こします。
私はCCAnimationとCCAnimateについてソースコードをチェックしましたが、それらはすべて "autorelease"です。なぜこのリークが起こったのか分かりません。 何をすべきか考えていますか?