我是初学者,使用Xcode的sprite-kit为iPhone编写游戏。我遇到了SKEmitterNode的问题。具体来说,即使我使用removeFromParent SKAction,每次添加以下SKEmitterNode时,我都会看到无限制的内存泄漏。有人有解决方案吗?感谢
SKEmitterNode *_EmitterShatterApart;
...
-(void)ShatterApart
{
SKAction *fadeaway = [SKAction fadeOutWithDuration:0.5];
SKAction *removeFromParent = [SKAction removeFromParent];
_EmitterShatterApart = [NSKeyedUnarchiver unarchiveObjectWithFile: [[NSBundle mainBundle] pathForResource:@"ShatterApart" ofType:@"sks"]];
_EmitterShatterApart.position = _NodePlayer.position;
if (!_EmitterShatterApart.parent) {
[_bgLayer addChild:_EmitterShatterApart];
_EmitterShatterApart.userInteractionEnabled=FALSE;
[_EmitterShatterApart runAction: [SKAction sequence:@[fadeaway,removeFromParent]]];
}
}
答案 0 :(得分:1)
调用_EmitterShatterApart
操作后,removeFromParent
将不会被取消分配,因为您在此处定义的静态变量中保留了对它的强引用:
SKEmitterNode *_EmitterShatterApart;