void SpriteFrameCache::removeUnusedSpriteFrames() { bool removed = false; std::vector<std::string> toRemoveFrames; for (auto iter = _spriteFrames.begin(); iter != _spriteFrames.end(); ++iter) { SpriteFrame* spriteFrame = iter->second; if( spriteFrame->retainCount() == 1 ) { toRemoveFrames.push_back(iter->first); CCLOG("cocos2d: SpriteFrameCache: removing unused frame: %s", iter->first.c_str()); removed = true; } } _spriteFrames.erase(toRemoveFrames); // XXX. Since we don't know the .plist file that originated the frame, we must remove all .plist from the cache if( removed ) { _loadedFileNames->clear(); } }