我正在为滚动视图内容注入动画,以便下拉以刷新。
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引用来自核心数据获取请求的结果,动画使应用程序崩溃,因为我在重新加载表视图数据之前不小心这样做了。 发生这种情况是因为表视图中的数据不再可用,因此动画滚动到不再存在的行。
经验教训 - 如果您正在使用滚动视图动画和核心数据,请注意何时选择重新加载表视图数据。 不要执行抓取,然后滚动,然后重新加载表视图数据。执行提取,然后重新加载表视图数据,然后滚动。
如果崩溃时出现错误消息,那将非常明显。