Я создал приложение, которое нормально компилируется, но, когда я пытаюсь играть снова, симулятор вылетает, и я не могу понять, почему. Соответствующие части в моем коде следующие:
iFocus2AppDelegate.m
- (void) flipToGameScreen:(NSInteger *)aMode aLevel:(NSInteger*)aLevel
{
NSInteger *myMode = aMode;
NSInteger *myLevel = aLevel;
GameScreenViewController *aGameScreenView = [[GameScreenViewController alloc] initWithNibName:@"GameScreen" mode:myMode level:myLevel bundle:nil];
[self setGameScreenViewController:aGameScreenView];
[aGameScreenView release];
gameScreenViewController.view.frame =[[UIScreen mainScreen] applicationFrame];
//animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache: YES];
[viewController.view removeFromSuperview];
[self.window addSubview:[gameScreenViewController view]];
[UIView commitAnimations];
}
GameScreenViewController.m
- (id)initWithNibName:(NSString *)nibNameOrNil mode:(NSInteger *)myMode level:(NSInteger *)myLevel bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization.
self.selectedMode = myMode;
self.selectedLevel = myLevel;
}
return self;
}
- (void) finished
{
[myTimer invalidate];
myTimer = nil;
[myTimer release];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"GameOver"
message:@"Do Something"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];
[alert addButtonWithTitle:@"Play Again"];
[alert addButtonWithTitle:@"Show HiScores"];
[alert addButtonWithTitle: @"Setup New Game"];
[alert show];
[alert release];
}
- (void) alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
//PlayAgain
iFocus2AppDelegate *mainDelegate = (iFocus2AppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate flipToGameScreen:selectedMode aLevel:selectedLevel];
[iFocus2AppDelegate release];
}
if (buttonIndex == 1)
{
//scores
iFocus2AppDelegate *mainDelegate = (iFocus2AppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate flipToHiScores];
[iFocus2AppDelegate release];
}
if (buttonIndex == 2)
{
//setings
iFocus2AppDelegate *mainDelegate = (iFocus2AppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate flipToGameSettings];
[iFocus2AppDelegate release];
}
}
Я вставил эти две части, так как я думаю, что должно быть что-то не так, особенно с GameScreenViewController, так как он аварийно завершает работу, когда он входит в этот экран во второй раз (любое другое переключение экрана (т. Е. Из оповещения в HiScores) работает. попросите любой другой фрагмент кода, который вам может понадобиться, любая помощь будет оценена.
(отредактировано): по запросу, вот что говорит консоль ...
(отредактировано снова): предыдущий вставленный код не был реальной частью; несмотря на то, что я прочитал все ответы, единственный код, который я получаю в консоли при сбое, это "GDB: Программа получила сигнал:" EXC_BAD_ACCESS "в Build & Debug.