ios - Obj-c NSNotificationCenter 错误访问

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

现在 10 次中有 9 次这很好并且按预期工作但是偶尔我会收到指向通知帖子行的 bad_access。

我从阅读其他人有类似问题的文章中猜测这是因为子对象已被删除,但我不知道该怎么做,因为它在它之前被调用已删除。

是不是发生了什么事延迟了后通知的调用,它最终在对象被移除后被调用,或者我找错了树?

更新

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

最佳答案

您需要删除观察者。观察者不会自动删除,因此如果您不删除它们,那么您会将它们堆叠在内存中,这可能是它稍后中断的原因。

关于ios - Obj-c NSNotificationCenter 错误访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103247/

相关文章:

ios - 自动布局与自动旋转冲突

ios - 填充时从 Collection View 中选择一个单元格

ios - 如何从 UITableView 的第一个单元格中获取数据?

ios - 发送到不可变对象(immutable对象)的变异方法关闭应用程序

iphone - 如何调用具有多个参数的方法

objective-c - 将 iPhone 5 添加到预先存在的通用应用程序中

ipad - 将 ipadsDetailViewController 设置为 UIWebView

ios - UIView 未正确更新

objective-c - 启用分页时的 UITableView 页面大小

ios - 在 iPhone 上解析时格式化 JSON 以换行