好怪异啊:在init中create的sprite,在onTouchBegan中不能用吗?

请教大侠:
cocos v 3.7.1 场景再现:

bool HelloWorld::init()
{
      ......
      helpSprite = Sprite::create("help0.png");    //helpSprite 在class的头文件声明
      .........
     EventListenerTouchOneByOne* listenerTouch = EventListenerTouchOneByOne::create();
     listenerTouch->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);
     _eventDispatcher->addEventListenerWithSceneGraphPriority(listenerTouch, this);
......
}

bool HelloWorld::onTouchBegan(Touch* touch, Event* event)
{
    static int clickCount = 1;
    Size visableSize = Director::getInstance()->getVisibleSize();

    helpSprite->setPosition(visableSize.width / 2, visableSize.height / 2);     // 0xC0000005:  读取位置 0xFEEEFF36 时发生访问冲突。调试跟踪不进去,郁闷
    this->addChild(helpSprite);

    return false;
}


```

难道这是cocos2d-x的机制造成的吗?不能再这样用还是我使用的问题? 请大侠们看看,多谢啦

经过试验:
在 helpSprite = Sprite::create(“help0.png”); 之后在retain一下 就可以了,是自动内存管理的问题

你是想 init里只create出来不addChild吗,然后点击一下在add? 这样是不行的,因为机制,add就会自动retain 然而不add就没有retain在周期后就被释放掉了。 当然不建议你手动retain这样,你可以先在init里面addChild 然后设置隐藏,在touch里面接触隐藏

恩,我刚开始就这么想的
明白了,多谢指导啊