[英]viewWillDisappear Causes App to Crash on Device but not on Simulator
我正在使用Storyboard,ARC和导航控制器在iOS 5.1的Xcode 4.4上开发一个简单的游戏。 该应用程序可以在模拟器上完美运行,但不能在设备(iPhone 4 CDMA)上运行。 因此,基本上,我有一个带有3个UIButton的主菜单(玩游戏,选项,帮助)。 当我单击Play游戏,然后尝试通过导航控制器的后退按钮返回菜单时,该应用程序在设备上崩溃。 它在以下线程处停止:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x70000008)
并指出以下几点:
0x35b4df78: ldr r3, [r4, #8]
我的代码中还有一点要调用popToRootViewContoller方法。 它还在这里崩溃(与我原本相同的线程错误)。 但是,如果我注释掉viewWillDisappear方法,则可以无问题地来回切换。 “选项和帮助”屏幕未实现viewWillDisappear方法,因此无法在设备上完美地来回切换。
我在viewWillDisappear方法下有以下内容:
-(void)viewWillDisappear:(BOOL)animated
{
[tmrCountdown invalidate];
[tmrEclapsedTime invalidate];
[tmrMainEnemyMovement invalidate];
[tmrMoveSpawnedEnemies invalidate];
[tmrSpawnEnemies invalidate];
accInc=currPrefs.accelerometerSensitivity;
enemySpeedX=5.0;
enemySpeedY=5.0;
countdown=4;
ecMiliseconds=0;
randTime=0;
stopped=NO;
gameStarted=NO;
}
我在这里调用popToRoot方法:
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex==0)//cancel
{
//called here
[self.navigationController popToRootViewControllerAnimated:YES];
}
else //1 (Play Again)
{
[self reInit];
}
}
谢谢,Mehul
从代码中可以看出,您正在使计时器无效,如果您尝试使无效的计时器(非重复计时器)无效,则可能会发生这种情况
repeats:NO
或释放计时器。 这也不是例外,因此您无法使用@try块来捕获它。 这是一个信号。 您要做的是:
在您的计时器选择器中,您需要调用
[timer release]; // if you have allocated it
timer=nil;
...
Some action
在您看来,WillDisappear
If (timer!=nil) {
[timer invalidate];
timer=nil;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.