Sne*_*nel 9 crash overlay mapkit ios android-mapview
我已经构建了一个应用程序,旨在显示一些叠加层.覆盖层采用多边形的形式,外圈最多10000个点.但是大量的观点似乎不是问题所在.在过去的几天里,我一直在简化我的应用,只是为了找到一个包含MapView的简单视图.视图从xib加载(连接了出口和委托).叠加是在方法中创建的 - (void)mapView:(MKMapView*)mapView regionDidChangeAnimated:(BOOL)动画并添加到mapView.
演示(可在此处https://github.com/nebucaz/mapkit)显示MapView,并在地图放大/缩小或平移时添加红色三角形.在玩MapView的缩放和平移(密集和快速)时,应用程序崩溃了.很容易为模拟器而烦恼,即使有可能(我可以提供崩溃日志),它在设备上也要难得多.
有两个演示:MapCrash和MapCrashStatic.第一个在地图周围创建多个多边形,具体取决于平移/缩放的位置.第二个只有一个静态多边形,它在 - (void)viewDidLoad中创建,然后在每次调用mapView时添加了regionDidChangeAnimated
应用程序总是崩溃与以下回溯:
Attaching to process 8745.
MapCrash(8745) malloc: protecting edges
[Switching to process 8745 thread 0x1820b]
[Switching to process 8745 thread 0x1820b]
(gdb) backtrace
#0 0x00000000 in ?? ()
#1 0x00e81a60 in CG::Path::apply_transform ()
#2 0x00ed741c in CGPathCreateMutableCopyByTransformingPath ()
#3 0x00f50d23 in CGContextAddPath ()
#4 0x000f11dc in MKRoadWidthAtZoomScale ()
#5 0x000ee498 in MKMapRectRemainder ()
#6 0x000fab01 in MKTilesRequireGoogleLegalNotices ()
#7 0x02723c17 in -[CALayer drawInContext:] ()
#8 0x027407e3 in tiled_layer_render ()
#9 0x0265b127 in CAImageProviderThread ()
#10 0x01eb04e6 in _dispatch_worker_thread2 ()
#11 0x98f44b24 in _pthread_wqthread ()
#12 0x98f466fe in start_wqthread ()
(gdb)
Run Code Online (Sandbox Code Playgroud)
Backtrace始终是相同的,它在库代码中的同一点崩溃.我用仪器(僵尸,泄漏,分配)进行了分析,并对过度保留的物体进行了一些测试.我认为这是一个记忆问题,但我还没有能够启动Malloc Guard.崩溃可能会在多台机器上重现 - 甚至很难,我只是重新安装了Xcode工具.
stackoverflow.com上的其他帖子也处理MapKit中的突然崩溃,但要么没有为我的问题提供直接解决方案,要么不得不处理委托和其他视图转换或应用程序启动/停止问题.ARC在我的项目中没有了.
我现在花了一个多星期的时间来捕获这个崩溃,仍然假设我误解了KMLViewer演示(Apple)或者做错了某事(对我家附近的其他iOS开发者来说是Credits!)
不过,我很感激你在这件事上的建议和帮助.
您可能已经考虑过这一点,但我在 MapKit 中看到了许多看起来不同的崩溃程序,这些崩溃程序都是由于没有将委托清零而导致的。只需确保在释放地图视图之前将其委托设置为 nil 即可。
此外,我看到许多开发人员倾向于在他们的地图视图上使用performSelector:afterDelay:。只要您将 cancelperform 调用也放在正确的位置就可以了。
| 归档时间: |
|
| 查看次数: |
2710 次 |
| 最近记录: |