iOS 11与VectorKit和Texture2D崩溃

Tim*_*ddy 8 mapkit ios11

由于iOS 11已经推出(11.0到11.0.3),我们已经遇到了这些崩溃.我只能假设在地图视图或地图图块被销毁时发生了这些崩溃.但是,我们无法在内部重现问题.冰球正在报道这次事故.

鉴于此崩溃总是在线程0(即主线程)上,我们不确定从哪里开始调查.对于与主线程上的设置和拆卸相关的任何UI都是"正常的",并且没有任何崩溃的堆栈帧包含对我们编写的代码的引用.

有没有人遇到Texture2Ddealloc的崩溃?

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0xbadd9a85ba4fbebd
Crashed Thread:  0

Thread 0 Crashed:
0   VectorKit                            0x0000000193c6b744 ggl::Texture2D::~Texture2D() + 92
1   libc++.1.dylib                       0x0000000183456f64 std::__1::__shared_weak_count::__release_shared() + 68
2   VectorKit                            0x0000000193d33bf0 -[VKRasterTile .cxx_destruct] + 168
3   libobjc.A.dylib                      0x000000018349eef4 object_cxxDestructFromClass(objc_object*, objc_class*) + 144
4   libobjc.A.dylib                      0x00000001834ac638 objc_destructInstance + 84
5   libobjc.A.dylib                      0x00000001834ac690 object_dispose + 12
6   VectorKit                            0x0000000193c3e1e8 -[VKTile dealloc] + 64
7   VectorKit                            0x0000000193c49fa4 -[VKRasterTile dealloc] + 72
8   VectorKit                            0x0000000193e51f80 __destroy_helper_block_.216 + 36
9   libsystem_blocks.dylib               0x00000001839b1a60 _Block_release + 156
10  libdispatch.dylib                    0x0000000183911048 _dispatch_client_callout + 12
11  libdispatch.dylib                    0x000000018391db74 _dispatch_main_queue_callback_4CF$VARIANT$mp + 1012
12  CoreFoundation                       0x0000000183f33f20 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
13  CoreFoundation                       0x0000000183f31afc __CFRunLoopRun + 2008
14  CoreFoundation                       0x0000000183e522d8 CFRunLoopRunSpecific + 432
15  GraphicsServices                     0x0000000185ce3f84 GSEventRunModal + 96
16  UIKit                                0x000000018d3ff880 UIApplicationMain + 204
17  <removed app name>                   0x0000000104f75438 main (main.m:17)
18  libdyld.dylib                        0x000000018397656c start + 0
Run Code Online (Sandbox Code Playgroud)

Min*_*uma 4

我们也遇到了这个问题,并且解决了。

  1. 如果在屏幕上看不到 MapKit 渲染,请不要更新它(在 iOS 11 之前,我们这样做是为了预加载地图数据和图像)
  2. 检查块并在将 MapKit 从视图中删除后不要保留它(这可能会导致第一点)

我认为这是由 MapKit 渲染过程中地图属性更改引起的