該死的setUserData和setUserObject


 
    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());
        sp->setTag(i * 5);
        sp->setUserObject(CCInteger::create(i));
        sp->setUserData(CCInteger::create(i));
        sp->setUserData(CCString::create("Hellos"));
        
        Value* val = new Value(i);
        sp->setUserData(val);
        vec1.pushBack(sp);
        addChild(sp);
    }


如果想要傳入setUserData裏面的數據(Value)還是要用new來創建這個奇葩的數據,不然會在按鈕回調調用這個userData的時候出現很大的問題,我勒個去。

大神說這是野指針錯誤,作用域出去前該值有效,作用於出去後就野指針了。





發佈了39 篇原創文章 · 獲贊 4 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章