Я не уверен, как полностью убить узел, который использует графику в cocos2d-iphone.
Так что именно я имею в виду?Ну, например, у меня есть CCTMXTiledMap
.Он использует некоторые текстуры, верно?Что ж, мне больше не нужно использовать эту плиточную карту, поэтому я убиваю ее , и я предполагаю, что такие текстуры убиты, и память освобождается.
Я использую [[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];
чтобы получить информацию о текстурах, которые в данный момент хранятся в памяти.
CCTMXTiledMap *map = [CCTMXTiledMap tiledMapWithTMXFile:@"myMap.tmx"];
[self addChild:map z:0];
[[CCTextureCache sharedTextureCache]
dumpCachedTextureInfo]; // I get 32MB usage.
[self removeChild:map cleanup:YES]; // I assume this will "kill" the map.
[[CCTextureCache sharedTextureCache]
dumpCachedTextureInfo]; // I STILL get 32MB usage
Как вы можете видеть, удаление карты из дочернего элемента, похоже, действительно не убивает используемую ею текстуру.
Как именно я должен освободить память тогда?Я думаю, что то же самое происходит с CCSprites
и т. Д. В соответствии с CCTextureCache
я просто храню память до тех пор, пока мое приложение не падает.
Примечание : я знаю, что могу использовать что-то вроде [[CCTextureCache sharedTextureCache] removeAllTextures];
и все почистить.Но это не кажется очень эффективным.