В момент, когда вы вызываете replaceScene, обе сцены будут существовать в памяти в течение короткого периода времени! Если вы используете CCSceneTransition, то обе сцены будут находиться в памяти на время перехода.
Поток выглядит следующим образом:
- сцена A запущена
- вызов CCDirector заменяет сцену на сцену B
- сцена B инициализирована, может загружать спрайты и т. Д.
- сцена A освобождается и память освобождается
Вы можете реализовать метод -(void) cleanup
в сцене, чтобы удалить большую часть ее содержимого перед изменением сцены, и вы можете отложить загрузку нового содержимого в метод -(void) onEnter { [super onEnter]; }
.
Лично я нахожу лучший подход в этом сценарии - сцена «загрузки», сцена, которая находится между двумя сценами (она может даже не работать более нескольких миллисекунд). Это дает время первой сцены, которое нужно освободить до инициализации следующей сцены.