Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何修复SKEmitterNode的内存泄漏?_Ios_Objective C_Memory Leaks_Sprite Kit_Skemitternode - Fatal编程技术网

Ios 如何修复SKEmitterNode的内存泄漏?

Ios 如何修复SKEmitterNode的内存泄漏?,ios,objective-c,memory-leaks,sprite-kit,skemitternode,Ios,Objective C,Memory Leaks,Sprite Kit,Skemitternode,我是一个初学者,使用Xcode的精灵工具包为iPhone编写游戏。我对SKEmitterNode有意见。特别是,每次添加以下SKEmitterNode时,即使使用removeFromParent SKAction,看起来都会出现无限内存泄漏。有人能解决这个问题吗?谢谢 SKEmitterNode *_EmitterShatterApart; ... -(void)ShatterApart { SKAction *fadeaway = [SKAction fadeOutWithD

我是一个初学者,使用Xcode的精灵工具包为iPhone编写游戏。我对SKEmitterNode有意见。特别是,每次添加以下SKEmitterNode时,即使使用removeFromParent SKAction,看起来都会出现无限内存泄漏。有人能解决这个问题吗?谢谢

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]]];
    }
}

调用
removeFromParent
操作后,
\u emitterShatterPart
将不会解除分配,因为您在此处定义的静态变量中保留了对它的强引用:

SKEmitterNode *_EmitterShatterApart; 

谢谢reecon,你能告诉我如何解决这个问题吗?我是否应该以不同的方式定义_EmitterShatterApart?最好花一些时间来了解强引用是什么,并对ARC(自动引用计数)的工作原理有一个基本的了解。这会为你节省时间和头痛,当然你应该这样做。这些问题有时很难发现,并可能导致随机低内存崩溃。它不会花很多时间去学习,而且非常简单。