2012-06-07 43 views
0

我爲動畫下拉刷新滾動視圖內容插圖。iOS的代碼崩潰的commitAnimations而在主線程

NSLog(@" in main thread? %d", [NSThread isMainThread]); // prints 1 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:.3]; 
[scrollView setContentInset:UIEdgeInsetsMake(0.0f, 0.0f, scrollView.contentInset.bottom, 0.0f)]; 
// Crash here 
[UIView commitAnimations]; 

我在提交動畫時崩潰了,並且崩潰了主線程。如果我刪除這段代碼,我的應用程序就不會崩潰。如果這個代碼塊的範圍很窄,那麼在這一點上可能會導致崩潰?

回答

1

由於動畫是滾動的cellForRowAtIndexPath引用從核心數據結果讀取請求時,動畫墜毀的應用程序,因爲我不小心右重裝表視圖數據之前做到了。這是因爲表視圖中的數據不再可用,所以動畫滾動到不再存在的行。

教訓教訓 - 如果你用滾動型動畫和核心數據的工作,要小心,當你選擇刷新你的表視圖數據有關。不要執行提取,然後滾動,然後重新加載您的表格視圖數據。請執行提取操作,然後重新加載您的表格視圖數據,然後滾動。

這本來是真的很明顯已經有過與崩潰的錯誤消息。