После закрытия SKScene память остается высокой
Я использую dispatch_onceNSObject создавать указатели данных. Таким образом, все указатели игровых активов создаются при появлении основного контроллера вида. Чтобы играть в игру, пользователь нажимаетUIButton соответствующий определенному уровню наUIViewController, Позвольте мне назвать это LevelSelectionController. Когда игра закончится, пользователь нажмет на ярлык (SKLabel). И все действия и узлы будут удалены.
[self removeAllActions];
[self removeAllChildren];
[self removeFromParent];
Кроме того,SKScene подкласс для определенного уровня делегирует задачу возврата пользователя в LevelSelectionController представителю игры, представляющему игровой контроллер.SKView следующее.
- (void)closeScene {
SKView *spriteView = [[SKView alloc] init];
[spriteView presentScene:nil];
[self.navigationController popViewControllerAnimated:YES];
}
Единственная проблема, которую я имею, состоит в том, что память остается высокой, когда пользователь покидает игровую сцену (SKScene). Игра требует много ресурсов. Поэтому, когда игра начнется, использование памяти увеличится до 200 МБ. Когда пользователь возвращается к контроллеру выбора исходного уровня, игровой симулятор все еще потребляет 200 МБ в соответствии сМонитор активности, Когда пользователь переходит на другой уровень, использование памяти увеличится еще на 10 МБ. Так как же освободить память для последней игры, когда пользователь покинет SKScene?
Я использую ARC. Версия Xcode 5.1. Целью разработки является iOS 7.1.
Спасибо за помощь.
- Правка 1 -
Я глупый. Я знаю, в чем проблема. Когда я закрываю сцену, я создаю новый SKView, который затем устанавливаю в ноль, чтобы выйти из текущей сцены. Оно работает. Но это не должно быть способом сделать это. Вместо этого мне нужно установить текущий SKView в переменную перед его представлением. Когда я закрываю сцену, мне нужно установить эту переменную на ноль. Хм ... я не думал.
- Редактировать 2 - Есть небольшие изменения, когда текущая сцена представлена ноль. Удаление его из removeFromSuperview мало что дает.