0

我正在使用地图视图,偶尔会在 iOS7(模拟器+设备)中崩溃。它看起来像这样:

异常类型:

EXC_BAD_ACCESS (SIGBUS) 异常代码:

KERN_PROTECTION_FAILURE 在 0x000000000000000c

应用程序特定信息:objc_msgSend() 选择器名称:points

iPhone 模拟器 463.9.4、iPhone OS 7.0(iPhone 视网膜(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 覆盖:drawKey:inContext:]_block_invoke + 847

3 MapKit 0x02bd9572-[MKOverlayView 覆盖: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

正如你所看到的,我的“自己的”代码都没有被执行。您对如何继续寻找这个问题的根源有任何猜测吗?

4

2 回答 2

0

您是在主线程上执行此操作吗?如果没有,试试这个:

dispatch_async(dispatch_get_main_queue(), ^{
  // here goes your UI-operation on your mapview
});
于 2013-09-26T19:37:28.493 回答
0

从您的错误堆栈中,我查看了MKPolylineView 文档。它说这个类在 iOS 7 中已被弃用,请MKPolylineRenderer改用......

不是你的代码?好的,我在堆栈中上升了一点,对于MKOverlayView 也是如此

在 iOS 7 及更高版本中,改为使用 MKOverlayRenderer 类来显示叠加层。

看来 MapKit 发生了一些变化!

于 2013-09-23T12:39:13.317 回答