TouchGroup的一个报错

![](file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\1439251754\QQ\WinTemp\RichOle\7XJ`Q9J)RW240I6{F0LD0{W.jpg)
这个地方有时候会报错
我看了引用计数
是一个已经被释放了的widget
但是为什么他还会遍历到这个widget?

下一句代码就会报错,空hitWidget->onTouchEnded(pTouch, pEvent);

同样的问题,期待官方解决!!!

只能说它被释放了,但是它没从父节点中移除

如何解决?游戏经常因为这个原因崩溃掉。求解决方案。

— Begin quote from ____

引用第4楼ixgsoul于2014-04-30 16:23发表的 回 3楼(孤独の快乐) 的帖子 :
如何解决?游戏经常因为这个原因崩溃掉。求解决方案。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=199952&pid=941572

— End quote

不知道,可能是你程序哪里写的有问题吧,这个不好说

  • -…请不要做出这样的回答亲,我代码可以确认没问题,引用计数直接是一个被释放后的数值,而且不只有我遇到这个问题吧?

这个引用计数都不要自己去管理,所有的UI都已经实现了自动引用计数,如果没有自己加retain,就不要自己release。

如果确认自己的代码没问题的话,可以把工程发给我们。

用来做这个效果的节点没有retain过。
还有这个是我项目的工程。。。。不可能发给你们的啊:10:哎。

— Begin quote from ____

引用第6楼ixgsoul于2014-05-01 15:21发表的 回 5楼(孤独の快乐) 的帖子 :

— End quote

又不知道你代码怎么写,你要我怎么回答?

目前是没见过有人反映这个问题

而且都是在TouchEnd这个地方发生这个错误

恩,好吧。

兄台?你的情况如何?

我也发现了 是touchgroup的bug吧 我正准备修改,,,还在看代码

求解知道原因了么 :10:

因为 那个widget 在 选中的时候是有的,但是在onTouchEnded的时候却已经被移除了
移除的位置 是在removeObject的时候 release了最后一个引用(之前已经被removeFromParent 并且只剩下这个引用了)

所以需要现判定下,再调用onTouchEnd
Widget* hitWidget = (Widget*)(selectedWidgetArray->arr);
int cnt = hitWidget->retainCount();
m_pSelectedWidgets->removeObject(hitWidget);
if (cnt > 1)
hitWidget->onTouchEnded(pTouch, pEvent);

ps: 版主这样回复不太好。。:2: