修改非图集创建的Sprite的SpriteFrame无效

样例代码:

auto sprite1 = Sprite::create("test.png");
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("res.plist");
auto sprite2 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("A.png"));
sprite1->getSpriteFrame()->setTexture(nullptr);
sprite2->getSpriteFrame()->setTexture(nullptr);
addChild(sprite1);
addChild(sprite2);

显示结果:sprite1正常显示,sprite2消失
原因是因为非图集创建的Sprite的_spriteFrame为nullptr,通过getSpriteFrame获取的只是一个临时对象,Sprite并没有引用,而且每次调用此函数都会重新创建对象。

不明白为什么要这样 希望能解释下

源码:

SpriteFrame* Sprite::getSpriteFrame() const
{
    if(nullptr != this->_spriteFrame)
{
    return this->_spriteFrame;
}
return SpriteFrame::createWithTexture(_texture,
                                      CC_RECT_POINTS_TO_PIXELS(_rect),
                                      _rectRotated,
                                      CC_POINT_POINTS_TO_PIXELS(_unflippedOffsetPositionFromCenter),
                                      CC_SIZE_POINTS_TO_PIXELS(_originalContentSize));
}

`