2012-08-03 46 views
0

我正在開發iOS 5.1的Xcode 4.4上使用故事板,ARC和導航控制器的簡單遊戲。該應用程序在模擬器上完美工作,但不在設備上(iPhone 4 CDMA)。所以基本上,我有一個主菜單3 UIButtons(玩遊戲,選項,幫助)。當我點擊Play遊戲然後嘗試通過導航控制器後退按鈕返回菜單時,該應用程序在設備上崩潰。它停在以下螺紋:viewWillDisappear導致應用程序崩潰在設備上,但不是在模擬器上

Thread 1: EXC_BAD_ACCESS (code=1, address=0x70000008) 

,並指出以下幾點:

0x35b4df78: ldr r3, [r4, #8] 

還有一個在我的代碼點我打電話的popToRootViewContoller方法。它也在這裏崩潰(與我想象的相同的線程錯誤)。但是,如果我註釋掉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方法在這裏:

我見的viewWillDisappear方法在下列

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex==0)//cancel 
    { 
     //called here 
     [self.navigationController popToRootViewControllerAnimated:YES]; 
    } 
    else //1 (Play Again) 
    { 
     [self reInit]; 
    } 
} 

感謝, MEHUL

+0

打開異常斷點,看看你能不能找出到底是哪行正在拋出異常 – 2012-08-03 20:33:33

+0

我正在做與丹一樣的評論。請參閱添加異常斷點:http://developer.apple.com/library/ios/#recipes/xcode_help-breakpoint_navigator/articles/adding_an_exception_breakpoint.html#//apple_ref/doc/uid/TP40010433-CH1-SW1 – Darren 2012-08-03 20:34:31

+2

並啓用殭屍檢查,你可能會引用一個已經發布的對象 – CSmith 2012-08-03 20:36:48

回答

0

當我從代碼中看到的,你是使計時器無效,並且如果您嘗試使無效計時器無效(非重複計時器

repeats:NO 

或釋放計時器。這不是一個例外,所以你不能用@try塊來捕捉它。這是一個信號。你所要做的是:

在你的計時器選擇你需要調用

[timer release]; // if you have allocated it 
timer=nil; 
... 
Some action 

並在您的viewWillDisappear

If (timer!=nil) { 
    [timer invalidate]; 
    timer=nil; 
} 
+0

嗨,這不起作用,因爲我的計時器似乎永不停止,或者停止並偶爾開始。這是因爲我的計時器重複設置爲yes嗎? – mpatel 2012-08-04 19:48:32

相關問題