//片段1 利用lambda
auto okBtn = MySprite::create("#jiesuotankuang_3.png", &](Ref* pSender){
if (0)
{
//do xx
}
else
{
auto bg = getBackgroundLayer()->getBgSprite();
auto okBtn = MySprite::create("#jiesuotankuang_3.png", &](Ref* pSender){
//这里会崩溃
this->getName();
//我通过psender一路获取parent到该layer发现layer != this
});
okBtn->setPosition(perVec2(0.5f, 0.04f, bg));
bg->addChild(okBtn);
}
});
okBtn->setPosition(perVec2(0.73f, 0.04f, bg));
bg->addChild(okBtn);
2//利用bind
auto okBtn = MySprite::create("#jiesuotankuang_3.png", bind(&XXX::bindCallBack, this, placeholders::_1));
okBtn->setPosition(perVec2(0.73f, 0.04f, bg));
bg->addChild(okBtn);
void XXX::bindCallBack(Ref* pSender)
{
if (0)
{
//xxx
}
else
{
auto bg = getBackgroundLayer()->getBgSprite();
auto okBtn = MySprite::create("#jiesuotankuang_3.png", &](Ref* pSender)
{
//这个地方正常 一路根据pSender获取到layer也是跟this相等的
this->removeFromParent();
});
okBtn->setPosition(perVec2(0.5f, 0.04f, bg));
bg->addChild(okBtn);
}
}
疑问:是不是lambda里面嵌套lambda,this指针是不是就丢失了变成野指针了?