ios – Obj-c NSNotificationCenter Bad Access

ios – Obj-c NSNotificationCenter Bad Access,第1张

概述所以我有一个CCLayer对象,它有一个子CCSprite对象,当一个条件发生时(通过更新方法检测到)一个CCSprite的方法被调用,它自己调用以下 [[NSNotificationCenter defaultCenter] postNotificationName:@"mymethod" object:nil]; 然后CCLayer继续运行 [node removeFromParentAndC 所以我有一个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.

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

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

UPDATE

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

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

以上是内存溢出为你收集整理的ios – Obj-c NSNotificationCenter Bad Access全部内容,希望文章能够帮你解决ios – Obj-c NSNotificationCenter Bad Access所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1069039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存