2013-01-14 78 views
0

我已經制定了一個自定義活動指示器以用於項目中。我爲此旋轉了一個靜態加載器圖像。由於UIView動畫導致的不可預測的崩潰

- (void) rotate { 
    lastInstance++; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(rotate)]; 
    [UIView setAnimationDuration:0.1]; 
    [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
    spinnerImageView.layer.transform = CATransform3DMakeRotation(M_PI*(lastInstance%10)/5, 0.0, 0.0, 1.0); 
    [UIView commitAnimations]; 
} 

spinnerimageview包含在上海華容器內,並且它帶有靜態加載程序映像。它工作正常,除了在沒有任何錯誤消息的情況下崩潰不可預知。

回答

1

看起來像你陷入了永無止境的遞歸。你如何決定何時停止輪換?

每次旋轉動畫完成時,只需再次調用rotate,看似沒有終點。

你看到的崩潰可能是堆棧溢出(怎麼樣)。

我建議重新考慮如何決定動畫能否繼續。

+0

是的......它一直保持無限旋轉,我只是在需要時顯示並隱藏它 –

+0

然後,這幾乎肯定會發生什麼。你需要重寫,以免你無限遞歸。我建議使用重複觸發旋轉方法的計時器,而不是使用動畫代理來調用它所使用的相同方法。 – Jasarien

+0

計時器是很好的建議。另外,不要設置委託http://stackoverflow.com/questions/13794562/sigsegv-segv-accerr-crash-reports-what-to-do/17184663#17184663然後當實現NSTimer時,請參閱http:// stackoverflow .COM /問題/ 6098146 /什麼引起的,這-iphone崩潰日誌/ 17202550#17202550 – MoDJ