Разрабатываю игру для iPad (сочиняю картинки из пазлов). В моем меню я выбираю уровень сложный (простой, средний или жесткий). После выбора будет показано основное игровое поле.
Вот место, где я создаю основное игровое поле:
- (void)simpleDiffButtonClicked:(id)sender
{
UIButton *button = sender;
if (simpleDiffButton == button) {
UIView *mySuperView = self.view.superview;
mainGame = [[MainGame alloc] initWithMode:1 andImage:nil]; //mainGame variable is declared in header file like: MainGame *mainGame;
mainGame.view.frame = CGRectMake(0, 0, 1024, 768);
[mySuperView addSubview: mainGame.view];
}
}
После того, как появится это игровое поле (есть много подслоев, добавляющих в self.view.layer), и я могу взаимодействовать с ним. Когда я хочу выйти из него, я нажимаю кнопку «назад». (здесь я хочу выпустить мой viewcontroller)
- (void)backToMenuButtonClicked:(id)sender
{
UIButton *button = sender;
if (nextImageClick == YES) {
return;
}
if (backToMenuButton == button) {
self.view.layer.sublayers = nil; //here's an exception
[self.view removeFromSuperview];
}
}
После нажатия кнопки «назад» все в порядке. И я могу выбрать трудно уровень снова. A выберите уровень, и после этого снова нажимаете кнопку «назад» и в этом месте происходит сбой приложения (EXC_BAD_ACCESS).
Как я понимаю, " self.view.layer.sublayers = nil " вызывает исключение.
Без этого все в порядке. Но память течет. И через несколько минут воспроизведения приложение вылетало (предупреждение памяти 2).
Я не могу решить проблему в течение недели. Я не понимаю, что делать, чтобы освободить мой viewcontroller (или мне нужно освободить все подслои в контроллере?).
Пожалуйста, кто-нибудь, помогите мне.
Заранее спасибо.