关于setUserData取不到数据的问题

//Vector<Sprite*> vec1; 类里面声明了这个

for (int i = 0; i < 10; i++)
{
    auto sp = Sprite::create("CloseNormal.png");
    sp->setTag(10);
    Value v(i);
    auto pointer = &v;
    sp->setUserData(pointer);
    log("the userdata is %d.", (*(Value *)sp->getUserData()).asInt());
    vec1.pushBack(sp);
    addChild(sp);
}

我在这里可以获取给这个精灵设置的userData

然后我设置了一个controlbutton,给它按下绑定这个事件
void Nice::btnCallBack(cocos2d::Ref sender, Control::EventType controlEvent)
{
static int idx = 0;
auto sp = vec1.at(idx);
log(“the userdata is %d.”, (
(Value *)sp->getUserData()).asInt());//这里就获取不到userData了!为什么?
++idx;

}

Value v(i);
auto pointer = &v;
sp->setUserData(pointer);

这存的是局部变量的指针地址,一离开for循环就变野指针,当然取不到啦