崩溃的可能原因?

时间:2013-09-23 12:02:57

标签: mapkit ios7

我正在使用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

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

2 个答案:

答案 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
});