2

请帮帮我.. 我是 cosos2D 游戏开发的新手。在仪器中,我在以下代码中的 spriteWithSpriteFrameName 处的游戏中发现了泄漏。

tileArray=[[CCArray alloc]initWithCapacity:11];
for (int i=1; i<=10; i++) {
@autoreleasepool {
CCSprite *encounter;
encounter = [CCSprite spriteWithSpriteFrameName:@"82x60.png"];
[self addChild:encounter z:i tag:2600+i];
encounter.position=CGPointMake(-1000,-1000);
[tileArray addObject:encounter];
}
}

尽快回复我。谢谢..

4

2 回答 2

0

您的tileArray未发布,这就是您泄漏的原因。只需将其设置在自动释放池中....

tileArray=[[[CCArray alloc]initWithCapacity:11] autorelease];
于 2012-08-30T06:56:05.817 回答
0

在你的 onExit 方法中,清理 spritesheet,并从 self 中删除所有子项。

-(void)onExit
 {
    [tileArray release];

    CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];

    [cache removeSpriteFramesFromFile:@"yourSpriteSheet.plist"];

    [self removeAllChildrenWithCleanup:YES];

    [super onExit];


 }
于 2012-08-27T10:36:28.097 回答