我正在使用mapview并偶尔在iOS7(模拟器+设备)中崩溃。它看起来像这样:
异常类型:
EXC_BAD_ACCESS(SIGBUS)异常代码:
KERN_PROTECTION_FAILURE位于0x000000000000000c
特定于应用程序的信息:objc_msgSend()选择器名称:points
iPhone模拟器463.9.4,iPhone OS 7.0(iPhone Retina (3.5英寸)/ 11A465)Thread 23 Crashed: 0 libobjc.A.dylib 0x03ea10b2 objc_msgSend + 14
1 MapKit 0x02bd9f0d - [MKPolylineView drawMapRect:zoomScale:inContext:] + 54
2 MapKit 0x02bd98ff __43- [MKOverlayView overlay:drawKey:inContext:] _ block_invoke + 847
3 MapKit 0x02bd9572 - [MKOverlayView overlay:drawKey:inContext:] + 268
4 VectorKit 0x0c54741d - [VKRasterOverlay drawKey:inContext:] + 61
5 VectorKit 0x0c5455e5 __40- [VKRasterOverlayTileSource _queueDraw:] _ block_invoke + 485
6 libdispatch.dylib 0x04ccd818 _dispatch_call_block_and_release + 15
7 libdispatch.dylib 0x04ce24b0 _dispatch_client_callout + 14
8 libdispatch.dylib 0x04cd0ef1 _dispatch_root_queue_drain + 287
9 libdispatch.dylib 0x04cd113d _dispatch_worker_thread2 + 39
10 libsystem_c.dylib 0x04ffae72 _pthread_wqthread + 441
11 libsystem_c.dylib 0x04fe2d2a start_wqthread + 30
正如您所看到的,我的“自己的”代码都没有被执行。你有没有猜测如何找到这个问题的根源?
答案 0 :(得分:0)
从错误的堆栈中,我看MKPolylineView documentation。它表示此类在iOS 7中已弃用,请改用MKPolylineRenderer
...
不是你的代码? 好吧,我在堆栈中上升了一点,同样适用于MKOverlayView:
在iOS 7及更高版本中,使用MKOverlayRenderer类进行显示 改为覆盖。
看来MapKit发生了一些变化!
答案 1 :(得分:0)
你是在主线程上做这个吗?如果没有,试试这个:
dispatch_async(dispatch_get_main_queue(), ^{
// here goes your UI-operation on your mapview
});