quick3.3 崩溃 闪退的情况越来越多,有遇到过的吗?

项目升级到了quick3.3 现在遇到了很多闪退的情况,粗略查了下,大部分是由于LuaTouchEventManager.cpp这个文件中LuaTouchEventManager类的onTouchesBegan函数在分发touch事件时引起的。

quick3.3写了一套自己的触摸事件管理机制,在lua层创建的Node的touch事件都是注册到LuaTouchEventManager来管理,当Node的cleanup消息触发时,lua层会去LuaTouchEventManager移除touch回调,
这时就遇到一个问题,当建立的Node没有加到父级(比如lua代码遇到错误),Node是不会收到cleanup消息的,这时候lua层的Node已经析构,c++层的Node也delete了,但注册的回调还在LuaTouchEventManager中
没有被remove掉,这时onTouchesBegan消息分发时候访问野指针直接就崩溃了。

虽然找到了原因,但也没想到好的解决方法,现在唯一的方法就是保证lua层代码不能出错,不能出现有Node没有加到父级中去。

一个马上能重现的的方法就是在Scene的ctor中写这样一行display.newLayer()。运行随便点几次界面就能崩溃。因为quick3.3的newLayer是用Node模拟的,而且默认开启setTouchEnabled,这个Layer没有加入到Scene中,ctor函数结束是Layer马上被删除,
但LuaTouchEventManager的touch回调没有被清除。

https://github.com/dualface/v3quick/issues/414

现在解决方法只能是改c++层代码了

C++不是很懂 麻烦楼主说下改哪个地方,怎么改啊。

C++不是很懂 麻烦楼主说下改哪个地方,怎么改啊。

自己改吧。。。我已经改好了

楼主 这个要怎么改,求帮忙 发站内信给你了