iOS代码在主线程中提交时崩溃

iOS代码在主线程中提交时崩溃,ios,crash,commitanimations,Ios,Crash,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.bot

我正在为下拉刷新设置滚动视图内容插入动画

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];

我在提交动画时崩溃,它在主线程中崩溃。如果我删除这段代码,我的应用程序永远不会崩溃。如果将动画的范围缩小到这段代码,那么此时会发生什么导致崩溃?

由于动画是滚动的,cellForRowAtIndexPath引用了一个核心数据获取请求的结果,动画导致应用程序崩溃,因为我在重新加载表视图数据之前不小心这样做了。发生这种情况的原因是表视图中的数据不再可用,因此动画滚动到不再存在的行

经验教训-如果使用scrollview动画和核心数据,请在选择重新加载表视图数据时小心。不要执行提取,然后滚动,然后重新加载表视图数据。执行提取,然后重新加载表视图数据,然后滚动

如果崩溃时出现了错误消息,那就很明显了