如何修复SKEmitterNode的内存泄漏?

时间:2014-07-19 19:21:17

标签: ios objective-c memory-leaks sprite-kit skemitternode

我是初学者,使用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]]];
    }
}

1 个答案:

答案 0 :(得分:1)

调用_EmitterShatterApart操作后,removeFromParent将不会被取消分配,因为您在此处定义的静态变量中保留了对它的强引用:

SKEmitterNode *_EmitterShatterApart;