3.0beta2 touch事件没有自动清除

我在一个layer里面注册了一个事件,代码如下


 auto touchListener = EventListenerTouchOneByOne::create();
 touchListener->setSwallowTouches(false);
 touchListener->onTouchEnded = ](Touch *touch, Event *event) { 
      Scene *st = Scene::create();
      BackgroundLayer *back = BackgroundLayer::create(); 
     st->addChild(back); 
     Director::getInstance()->replaceScene(st); 
     return; };
 touchListener->onTouchMoved = ](Touch* touch, Event* event){ return; };
 touchListener->onTouchBegan = ](Touch *touch, Event *event) { return true; }; 
_eventDispatcher->addEventListenerWithFixedPriority(touchListener, -1);

但是当我切换了下一个场景的时候,这个时候该layer的析构函数已经调用,但是在下一个场景居然还可以响应这个事件,导致每一次点击就创建一次新的场景,除非我在layer的析构函数里面调用
_eventDispatcher->removeAllEventListeners();函数,事件才不会继续响应了。
但是如果这样,我不是会把其他layer注册的事件也一起清除。
这个应该怎么办,我也不可能在layer里面保存每一个注册的事件,然后再析构函数里面再一个一个删除吧。

将注册事件的函数换成这个就可以了。
addEventListenerWithSceneGraphPriority(touchListener, this);