无法找到崩溃的原因 - [UIScrollView(UIScrollViewInternal)_scrollViewAnimationEnded:finished:]

时间:2013-01-12 13:23:41

标签: ios crash scrollview

在我的应用程序中,经常会报告出现以下日志的许多崩溃,但即使有多个测试设备和iOS版本,我也无法重现它。所以没有办法在Xcode上找到原因。因为跟踪中没有任何步骤,这导致我的代码,我无法想象找到它的起源的任何方法。应用程序本身非常复杂,当然也使用了很多嵌入式的Scroll Views。

有谁知道从哪里开始寻找?或者之前有过类似的问题吗?

我非常感谢任何帮助!

祝你好运, 弗洛里安

OS Version:      iPhone OS 6.0.1 (10A523)
Report Version:  104

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0xd1d28fbc
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                     0x392e65b0 objc_msgSend + 16
1   UIKit                               0x35a839f7 -[UIScrollView(UIScrollViewInternal)  _scrollViewAnimationEnded:finished:] + 135
2   UIKit                               0x35a838e9 -[UIAnimator stopAnimation:] + 469
3   UIKit                               0x35b1e257 -[UIAnimator(Static) _advanceAnimationsOfType:withTimestamp:] + 295
4   UIKit                               0x35a83381 -[UIAnimator(Static) _LCDHeartbeatCallback:] + 53
5   QuartzCore                          0x323d3071 CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) + 161
6   QuartzCore                          0x323d2fc9 CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*, unsigned long long, unsigned long long, unsigned long long, void*) + 65
7   IOMobileFramebuffer                 0x340befd7 IOMobileFramebufferVsyncNotifyFunc + 155
8   IOKit                               0x35ee8449 IODispatchCalloutFromCFMessage + 193
9   CoreFoundation                      0x339605db __CFMachPortPerform + 119
10  CoreFoundation                      0x3396b173 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35
11  CoreFoundation                      0x3396b117 __CFRunLoopDoSource1 + 139
12  CoreFoundation                      0x33969f99 __CFRunLoopRun + 1385
13  CoreFoundation                      0x338dcebd CFRunLoopRunSpecific + 357
14  CoreFoundation                      0x338dcd49 CFRunLoopRunInMode + 105
15  GraphicsServices                    0x33f222eb GSEventRunModal + 75
16  UIKit                               0x3596a2f9 UIApplicationMain + 1121
17                                 0x00005233 main (main.m:14)

3 个答案:

答案 0 :(得分:17)

我遇到了同样的崩溃。结果是因为我们使用[controller setContentOffset:newPt animated:YES]为控制器设置动画,并且我们在控制器上实现了scrollViewDidScroll委托方法。单击屏幕上的按钮可以前进到另一个控制器,因此如果用户在动画进行过程中设法点击按钮,我们就会遇到原始海报的崩溃。解决方案只是在dealloc中将委托设置为nil。

答案 1 :(得分:2)

SIGSEGV信号在进行无效虚拟内存引用或分段错误时发送给进程。 (见Wikipedia

因此,您正在访问可能已被释放的对象。因为这是一个动画期间,你可能定义了一个在动画结束后调用的选择器或类似的东西?那将是我开始寻找的。

答案 2 :(得分:2)

您可能需要查看此主题:Is there a way to cancel an animated UITableView/UIScrollView setContentOffset:animated:?

该讨论表明,在scrollview发送动画结束消息之前,它可能是一个dealloc'd的委托。