我在该字段中有一个应用程序在前台崩溃。我在根视图控制器中有一个MKMapView。此根视图控制器在顶部显示模态视图控制器。当模态视图控制器被解除时,在调用其viewWillAppear方法之后,在根视图控制器中呈现MKMapView时,似乎发生了崩溃。这发生在ios7中。任何人都知道造成这种崩溃的原因是什么?崩溃发生在前台,与Occasionally iOS 6 MKMapView crashes in initWithFrame
不同堆栈跟踪:
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x200000a0
Crashed Thread: 13
0 IMGSGX543GLDriver 0x2efadfd6 sgxBindCurrentTextures + 118
1 IMGSGX543GLDriver 0x2efaf143 sgxBeginRender + 399
2 IMGSGX543GLDriver 0x2efa75c3 glrClearCore + 235
3 IMGSGX543GLDriver 0x2efa73e5 glrClear + 193
4 GLEngine 0x323640c7 glClear_Exec + 395
5 VectorKit 0x37bf1531 -[VKMapModel drawScene:withContext:] + 125
6 VectorKit 0x37bf13f1 -[VKMapModel recursiveDrawScene:withContext:pass:] + 189
7 VectorKit 0x37bf12d5 -[VKModelObject recursiveDrawScene:withContext:pass:] + 237
8 VectorKit 0x37bf11e1 -[VKWorld drawScene:withContext:] + 45
9 VectorKit 0x37bf0a0d -[VKScreenCanvas _renderCore:] + 353
10 VectorKit 0x37befba7 __36-[VKScreenCanvas drawWithTimestamp:]_block_invoke_2 + 51
11 VectorKit 0x37bd527f -[VGLContext perform:] + 67
12 VectorKit 0x37befb5d __36-[VKScreenCanvas drawWithTimestamp:]_block_invoke + 113
13 libdispatch.dylib 0x3ab36d1b _dispatch_call_block_and_release + 11
14 libdispatch.dylib 0x3ab3d273 _dispatch_queue_drain$VARIANT$mp + 375
15 libdispatch.dylib 0x3ab3d06b _dispatch_queue_invoke$VARIANT$mp + 43
16 libdispatch.dylib 0x3ab3dce1 _dispatch_root_queue_drain + 77
17 libdispatch.dylib 0x3ab3dc23 _dispatch_worker_thread + 87
18 libsystem_pthread.dylib 0x3ac7ac1d _pthread_body + 141
19 libsystem_pthread.dylib 0x3ac7ab8f _pthread_start + 103
答案 0 :(得分:0)
SIGSEV通常意味着非法的内存寻址(零,被破坏的对象),或者你有一个内存失败的设备。如果您正在使用自定义地图图片,则它们可能太大或者压力设备的内存并导致其失败。一般来说,MapKits在旧设备上不能正确处理超过100个点。
尝试测试不同的设备。如果它在每台设备上都出现故障,那么您的代码中很可能会出现加载自定义图形的错误。
如果仅在一台设备上失败,那么您的设备很可能出现问题。替换它。
答案 1 :(得分:0)
有可能MKMapView被取消分配,但代表仍在尝试向其发送消息,因此崩溃。尝试在呈现模态时将委托设置为nil,然后在模态被解除后将其设置为自我。