我正在使用故事板、ARC 和导航控制器在 Xcode 4.4 上为 iOS 5.1 开发一个简单的游戏。该应用程序可以在模拟器上完美运行,但不能在设备(iPhone 4 CDMA)上运行。所以基本上,我有一个带有 3 个 UI 按钮(玩游戏、选项、帮助)的主菜单。当我单击 Play Game 然后尝试通过导航控制器返回按钮返回菜单时,应用程序在设备上崩溃。它在以下线程停止:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x70000008)
并指出以下几点:
0x35b4df78: ldr r3, [r4, #8]
在我的代码中还有一点我正在调用 popToRootViewContoller 方法。它也在这里崩溃(与我想的相同的线程错误)。但是,如果我注释掉 viewWillDisappear 方法,那么我可以毫无问题地来回切换。Options 和 Help 屏幕没有实现 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];
}
}
谢谢, 梅胡尔