0

我正在为滚动视图内容插图制作动画,以便下拉刷新。

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

提交动画时我遇到了崩溃,它使主线程崩溃。如果我删除这段代码,我的应用程序永远不会崩溃。如果它几乎缩小到这个代码块,那么此时可能导致崩溃的原因是什么?

4

1 回答 1

1

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

经验教训——如果你正在使用滚动视图动画和核心数据,当你选择重新加载你的表视图数据时要小心。不要执行获取,然后滚动,然后重新加载表视图数据。执行获取,然后重新加载表视图数据,然后滚动。

如果崩溃时出现错误消息,那将非常明显。

于 2012-06-07T05:56:13.363 回答