首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >释放数组EXC_ACCESS_ERROR和Cocos2D

释放数组EXC_ACCESS_ERROR和Cocos2D
EN

Stack Overflow用户
提问于 2012-02-20 01:11:57
回答 1查看 438关注 0票数 0

最近,我发布了一个关于一些内存问题的here问题。多亏了这个美妙的社区,我现在已经解决了这个问题,但我面临着另一个问题。我正在使用Cocos2d开发一个游戏,并试图从和数组中删除雪碧。当我试图释放用于跟踪要删除的精灵的临时数组时,就会出现问题。

代码语言:javascript
运行
复制
    NSMutableArray *spritesToRemove = [[NSMutableArray alloc] init];

    // Loop through all sprites
    for(CSSprite *sprite in _sprites){
        if(sprite.toRemove){
            [spritesToRemove addObject: sprite];
        }
    }

    // loop through sprites to be removed
    for(CSSprite *removeableSprite in spritesToRemove){

        [_sprites removeObject: removeableSprite];

        // Cocos2d code to remove a sprite
        [self removeChild: removeableSprite cleanup: YES]; 
    }

    [spritesToRemove release]; // EXC_BAD_ACCESS error 

我有种感觉,我得到错误的原因是,在实际释放数组之前,我要在[self removeChild: removeableSprite cleanup: YES];中释放sprite对象。如果我删除行[spritesToRemove release],这一切都很好,但很明显,我手上有一个内存泄漏。

我已经尝试移动移除精灵,我可以通过完全省略行[self removeChild: removeableSprite cleanup: YES];来排序内存问题,但是Cocos2d在[child visit]; of -(void) visit的CCNode中抛出了相同的EXC_BAD_ACCESS错误

再次感谢你的帮助:-)

编辑:,我启用了NSZombie,收到了以下消息:

*** -[Sprite release]: message sent to deallocated instance 0xfa94cf0

对我来说,这暗示了我最初的想法,数组中的一个条目很快就会被释放。那是对的吗?如果是的话,我还能查到在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-20 14:09:29

我设法找到了这个问题(老实说,我觉得有点傻:-P )。当我将它添加到数组中时,我正在手动释放它,因为它不在提供的代码中,所以你们不可能找到它。精灵已经被设置为自动释放,因此被清除了两次--导致了我的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9355040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档