对象NSNotificationCenter访问不良

时间:2013-11-20 17:50:45

标签: ios objective-c cocos2d-iphone nsnotificationcenter

所以我有一个CCLayer对象,它有一个子CCSprite对象,当一个条件发生时(通过更新方法检测到)一个CCSprite的方法被调用,它自己调用以下

[[NSNotificationCenter defaultCenter] postNotificationName:@"mymethod" object:nil];

然后CCLayer继续运行

[node removeFromParentAndCleanup:YES];

让CCSprite删除它。 CCLayer还在init上调用了以下内容

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mymethod) name:@"mymethod" object:nil];

现在9次中有10次这很好并按预期工作但偶尔我会得到一个bad_access指向通知帖子。

我从阅读有关类似问题的其他人的猜测是,这是因为子对象已被删除,但我不知道如何做它,因为它在它被调用之前被删除了。

可能会发生什么事情来延迟调用帖子通知,并且最终在删除对象后调用,或者我是在咆哮错误的树?

更新

在上面添加了删除代码,如果我注释掉删除和清除行,则不会发生。

1 个答案:

答案 0 :(得分:5)

您需要删除观察者。观察者不会被自动删除,所以如果你没有删除它们,那么你将它们堆叠在内存中,这可能是它在以后破坏的原因。