我已经开发了一个应用程序,旨在显示一些覆盖层。这些覆盖层是由多边形组成的,外环有多达10000个点。但高数量的点似乎并不是问题所在。在过去的几天里,我一直在简化我的应用程序,最终只剩下一个包含MapView的简单视图。该视图从xib加载(连接了outlets和delegate)。覆盖层是在方法-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated中创建的,并添加到mapView中。
演示(可在此处获取:https://github.com/nebucaz/mapkit)显示了一个MapView,每当地图缩放或平移时,就会添加一个红色三角形。当快速频繁地进行缩放和平移MapView时,应用程序崩溃。模拟器很容易崩溃,但在设备上很难,尽管这是可能的(我可以提供崩溃日志)。
有两个演示:MapCrash和MapCrashStatic。第一个根据用户拖动/缩放地图的位置创建多个多边形。第二个仅具有单个静态多边形,该多边形在-(void)viewDidLoad中创建,然后在每次调用mapView regionDidChangeAnimated时都会添加。
应用程序总是崩溃,并显示以下回溯:
回溯(Backtrace)总是相同的,在库代码的同一点崩溃。我使用了工具(Zombies、Leaks、Allocations)进行了分析,并且还进行了一些关于过度保留对象的测试。我认为这可能是一个内存问题,但我还无法启动Malloc Guard。即使我只重新安装了Xcode工具,该崩溃也可以在多台机器上复现。
Stackoverflow.com上的其他帖子也涉及MapKit的突然崩溃,但要么没有直接解决我的问题,要么必须处理委托和其他视图转换或应用程序启动/停止问题。我的项目中关闭了ARC。
尽管如此,我仍然非常感谢您在这个问题上提供的建议和帮助。
演示(可在此处获取: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)
回溯(Backtrace)总是相同的,在库代码的同一点崩溃。我使用了工具(Zombies、Leaks、Allocations)进行了分析,并且还进行了一些关于过度保留对象的测试。我认为这可能是一个内存问题,但我还无法启动Malloc Guard。即使我只重新安装了Xcode工具,该崩溃也可以在多台机器上复现。
Stackoverflow.com上的其他帖子也涉及MapKit的突然崩溃,但要么没有直接解决我的问题,要么必须处理委托和其他视图转换或应用程序启动/停止问题。我的项目中关闭了ARC。
- Navigation and MapKit makes app crash
- IOS - Mapkit crash - Is it a bug in xcode 4.2 and Automatic Reference Counting (ARC)?
- MKMapView crash (Annotations)
- I need help with a MKMapView crash (Delegate)
尽管如此,我仍然非常感谢您在这个问题上提供的建议和帮助。
Cannot access memory at address 0x1 (gdb) where #0 0x00000001 in ?? () #1 0x011a741c in CGPathCreateMutableCopyByTransformingPath () #2 0x01220d23 in CGContextAddPath () #3 0x003be3e1 in MKMapRectRemainder () #4 0x003be498 in MKMapRectRemainder () #5 0x003cab01 in MKTilesRequireGoogleLegalNotices () #6 0x029f3c17 in -[CALayer drawInContext:] () #7 0x02a107e3 in tiled_layer_render () #8 0x0292b127 in CAImageProviderThread () #9 0x021804e6 in _dispatch_worker_thread2 () #10 0x9c981b24 in _pthread_wqthread () #11 0x9c9836fe in start_wqthread ()
- Diziet