Cocos2D CClayer移除与不良访问



我需要在更新函数中释放我的图层。我调用函数finishGame

-(void)finishGame{
    [[CCDirector sharedDirector] pause];
    [layerRoot removeFromParentAndCleanup:YES];
    [layerRoot autorelease];
    layerRoot=nil;
}

但是我得到了访问错误的通知

// updates with priority == 0
    DL_FOREACH_SAFE( updates0, entry, tmp ) {
        if( ! entry->paused )
            entry->impMethod( entry->target, updateSelector, dt ); //<<< In this string.
    }

或返回0;这很奇怪。因为程序无法完成。

我做错了什么?

[obj removeFromParentAndCleanup:YES]释放有问题的对象。你不应该在调用那个方法之后调用对象上的任何东西,除非你指定了NO。你仍然可以将其设置为nil,不过,这只是良好的Objective-C编码实践。

还有:如果你正确地子类化了CCNode,它们无论如何都会自动释放。

最新更新