在我的应用程序中,经常会报告出现以下日志的许多崩溃,但即使有多个测试设备和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)
答案 0 :(得分:17)
我遇到了同样的崩溃。结果是因为我们使用[controller setContentOffset:newPt animated:YES]为控制器设置动画,并且我们在控制器上实现了scrollViewDidScroll委托方法。单击屏幕上的按钮可以前进到另一个控制器,因此如果用户在动画进行过程中设法点击按钮,我们就会遇到原始海报的崩溃。解决方案只是在dealloc中将委托设置为nil。
答案 1 :(得分:2)
SIGSEGV
信号在进行无效虚拟内存引用或分段错误时发送给进程。 (见Wikipedia)
因此,您正在访问可能已被释放的对象。因为这是一个动画期间,你可能定义了一个在动画结束后调用的选择器或类似的东西?那将是我开始寻找的。 p>
答案 2 :(得分:2)
您可能需要查看此主题:Is there a way to cancel an animated UITableView/UIScrollView setContentOffset:animated:?
该讨论表明,在scrollview发送动画结束消息之前,它可能是一个dealloc'd的委托。