0

我的游戏中有一个对象继承自CCLayer. 这一层MainLayer是游戏的主要组成部分,其中大部分动作发生并显示精灵。

我遇到并且已经尝试了几个小时来解决的问题是取消分配 this MainLayer。这一层有很多孩子和很多动作。最烦人的部分是,只有在释放时它有时会崩溃,有时它工作正常,我看不出情况有什么不同。

它崩溃的部分是dealloc方法CCNode

- (void) dealloc
{
    CCLOGINFO( @"cocos2d: deallocing %@", self);

    [actionManager_ release];
    [scheduler_ release];
    [camera_ release];
    [grid_ release];
    [shaderProgram_ release];
    [userObject_ release];

    // children
    CCNode *child;
    CCARRAY_FOREACH(children_, child)
        child.parent = nil;

    [children_ release];

    [super dealloc];
}

特别是失败child.parent = nil;并出现EXC_BAD_ACCESS错误。

关于问题可能是什么的任何想法?

4

1 回答 1

0

是的。您正在释放超类负责的对象。据我所知,这里的整个 dealloc 方法是多余的。它将过度释放所有内部对象。

PS:如果您还没有接近发布应用程序,请使用 ARC。

于 2013-08-25T21:29:04.443 回答