【发布时间】:2014-12-29 16:49:30
【问题描述】:
我们在基于地图的 iOS 应用程序中看到奇怪的崩溃,我无法弄清楚。基本上,以下代码行在崩溃日志中一遍又一遍地重复,超过 100 次:
6 VectorKit 0x000000019050c6f8 __86-[VKMapCameraController _animateToPosition:pitch:yaw:duration:timingCurve:completion:]_block_invoke347 + 40
7 VectorKit 0x0000000190485a30 -[VKAnimation _stopAnimation:] + 140
8 VectorKit 0x0000000190488b20 -[VKMapCameraController setYaw:animated:] + 100
9 MapKit 0x000000018540263c -[MKMapView snapToNorth:] + 148
在最终调用之前:
0 CoreFoundation 0x0000000183251e38 _CFArrayReplaceValues + 152
1 CoreFoundation 0x000000018332876c __CFRepositionTimerInMode + 108
2 CoreFoundation 0x000000018332876c __CFRepositionTimerInMode + 108
3 CoreFoundation 0x0000000183272630 CFRunLoopTimerSetNextFireDate + 580
4 MapKit 0x00000001853e8588 -[MKMapView _didChangeRegionMidstream:] + 196
5 MapKit 0x0000000185404e90 -[MKMapView mapLayer:didChangeRegionAnimated:] + 60
其中 _CGArrayReplaceValues 崩溃并出现 EXC_BAD_ACCESS KERN_PROTECTION_FAILURE at 0x000000016fccbef0 错误。
我想指出,我们从未直接调用此崩溃报告中的任何方法,实际上 VectorKit 是完全私有的 Apple 框架。我们在远程相关的应用程序中所做的唯一事情是调用基本的 setRegion:animated: 方法,通常在用户点击注释以集中在所述注释上之后。还值得指出的是,这只发生在 iOS 8 上。没有报道过一次 iOS 7 崩溃。
这是完整崩溃报告的链接:http://crashes.to/s/f09eb96c753
感谢任何帮助。谢谢。
【问题讨论】:
-
听起来像是由于无限递归导致的堆栈溢出,问题代码位于“finally”位中。你是 MKMapView 的子类吗?
-
不,我们没有继承 MKMapView。我们只使用 MKMapView 的委托方法。我们只在用户点击注释时调用基本的 setRegion 方法,或者如果它们放大得太远我们将它们缩小。但即使在放大过远的情况下,我们也会缩小超过一个阈值。 IE。如果高度
-
如果您将委托方法更改为什么都不做会发生什么?
-
那么应用程序无法正常运行。这很难,因为我无法重现崩溃,我们只能在 Crashlytics 中看到它。
-
可能是越狱设备?
标签: ios objective-c crash ios8 mapkit