这只会偶尔发生一次。当我按下菜单项所调用的方法中的断点时,我最终到达该方法的结尾,而当我退出时,我最终到达ccTouchEnded,然后发生错误的访问。在调试输出窗口中什么都没有显示,但是我得到一个绿色箭头,指向带有错误消息的main方法。

任何想法为什么会发生这种情况?

谢谢。

最佳答案

因此,如果有人遇到相同的问题,我就知道发生了什么事。我有一个包含几个孩子的CCMenu。当一个孩子被敲击时,我做了我想要的事情,然后通过removeChild:cleanup:在CCMenuItem的选择器中将其从CCMenu中删除。问题在于,在执行选择器方法时,Cocos2d会停用CCMenuItem,然后在方法完成时将其重新激活。因此,在方法中,我基本上是通过从CCMenu中删除CCMenuItem来销毁CCMenuItem,然后在方法结束时,Cocos2d尝试重新激活它,但它不再存在于内存中。

我没有找到解决此问题的方法,因此可能无法从其选择器方法的CCMenu中删除CCMenuItem。

解决该问题的方法是简单地在菜单项上调用setVisible:NO和setIsEnabled:NO。但是,我可以想象在某些情况下这不是最好的方法。也许在这些情况下,您可能会弄乱z位置或使菜单项变得混乱的内容。

无论如何,我希望这对其他人有帮助,我知道我已经坚持了一段时间。 :)

10-08 12:34