C++ 是否可以创建*cAnimation对象的std::map?

C++ 是否可以创建*cAnimation对象的std::map?,c++,cocos2d-iphone,C++,Cocos2d Iphone,从我创建它们的那一刻起,它们似乎都被自动释放=s void SceneView::createAnimation(KillerRabbit* killerRabbit, std::string animation) { CCArray* animFrames = CCArray::createWithCapacity(15); int first = std::stoi(killerRabbit->spriteSheetMap[animation]["FIRST"]);

从我创建它们的那一刻起,它们似乎都被自动释放=s

void SceneView::createAnimation(KillerRabbit* killerRabbit, std::string animation) {
    CCArray* animFrames = CCArray::createWithCapacity(15);
    int first = std::stoi(killerRabbit->spriteSheetMap[animation]["FIRST"]);
    int last = std::stoi(killerRabbit->spriteSheetMap[animation]["LAST"]);
    char str[100] = {0};
    for (int i = first; i <= last; i++) {
        // Obtain frames by alias name
        sprintf(str, (killerRabbit->spriteSheetMap[animation]["KEY"]+"[%d].png").c_str(), i);
        CCSpriteFrame* frame = sharedSpriteFrameCache->spriteFrameByName(str);
        animFrames->addObject(frame);
    }

    spriteAnimationsMap[killerRabbit->spriteName][animation] = CCAnimation::createWithSpriteFrames(animFrames, 0.1f);
    // 14 frames * 1sec = 14 seconds
    rabbitSprites[killerRabbit->spriteName][animation]->
    runAction(CCRepeatForever::create(CCAnimate::create(spriteAnimationsMap[killerRabbit->spriteName][animation])));
}
并尝试在以下位置访问对象:

spriteAnimationsMap[killerRabbit->spriteName][animation]

在使用另一种方法编写的代码的后面部分中,该贴图中的对象将被自动删除,我如何保留它以便以后可以使用其中存储的不同动画?

噢,我真傻,我必须这样做:

spriteAnimationsMap[killerRabbit->spriteName][animation]->retain();

哦,我真傻,我不得不这么做:

spriteAnimationsMap[killerRabbit->spriteName][animation]->retain();

杀手回来了:)这只兔子还没有我希望的那么致命=(你怎么知道它已经发布了?为什么
runAction
代码行会改变这一点?@sftrabbit我认为它是我正在使用的框架的一部分,它有某种自动释放机制,我似乎无法正常工作=s我知道,由于IDE向m抛出的所有空异常,对象都消失了e=(嵌套非常重,我的头旋转着试图将代码追溯到它的根,在这样的情况下我该怎么办?每个方法中包含5个,那些也包含5个=Killerabbit回来了:)这只兔子并不像我希望的那么致命=(你怎么知道它已经发布了?为什么
runAction
代码行会改变这一点?@sftrabbit我认为它是我正在使用的框架的一部分,它有某种自动释放机制,我似乎无法正常工作=s我知道,由于IDE向m抛出的所有空异常,对象都消失了e=(它的嵌套非常重,我的脑袋旋转着试图将代码追溯到它的根,在这样的情况下我应该怎么做?每个方法中包含5个,那些也包含5个=s