0

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

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

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

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

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

NSZombies 被禁用,所以它不会被意外保存在内存中。

4

1 回答 1

2

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

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

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

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

于 2011-11-17T15:17:51.737 回答