Cocos2d:particle.autoRemoveOnFinish不释放内存

时间:2011-11-17 12:53:52

标签: memory memory-management memory-leaks cocos2d-iphone particles

我以下列方式创建粒子效果:

CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
p.autoRemoveOnFinish = YES;
//more parameters
p.duration = 1;

并将其添加到我的场景中:

[self addChild:p z:self.zOrder+1];

每次创建此粒子效果时,都会分配3MB内存,但从未发布。 我究竟做错了什么?我是否必须手动释放粒子系统?

NSZombies被禁用,因此不会意外地保存在内存中。

1 个答案:

答案 0 :(得分:2)

您分配(或保留)的所有内容也必须释放。对于Cocos2D,最简单的方法是将它变成这样的自动释放对象:

CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
[p autorelease];
p.autoRemoveOnFinish = YES;
p.duration = 1;

然后它将在Cocos2D清理你的场景后发布。

PS: 5000颗粒是GIGANTIC数量的颗粒!难怪你会看到几兆字节的分配。最多尝试500, 如果您使用大约32x32像素或更大像素的粒子纹理,则为100或更少。