ios - 如何修复 SKEmitterNode 的内存泄漏?

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

最佳答案

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

SKEmitterNode *_EmitterShatterApart; 

关于ios - 如何修复 SKEmitterNode 的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24844106/

相关文章:

javascript - 过渡 react 导航标题背景颜色

objective-c - 反序列化JSON后如何区分 bool 值和整数?

c - CreateList 函数(链表)中的内存泄漏

ios - 如何在 Fabric 中使用分发配置文件?

ios - 动态增加 tableView 中 UIView 的高度

ios - Swift 不允许我设置变量数据

ios - 调用具有关键字 "getter=isXXX"的 Objective-c 属性

objective-c - NSInvalidArgumentException 错误。不在 UIUserInterfaceIdiomPad 下运行

javascript - 如何使用 Backbone.js 识别内存泄漏

android创建对象和内存