向Google Map添加折线时触发EXC_BAD_ACCESS错误求助
Google Maps添加折线触发EXC_BAD_ACCESS崩溃问题
我在给Google Map添加折线时遇到EXC_BAD_ACCESS (code=1, address=0x8)错误,只要注释掉polyline.map = mapView这一行,程序就能正常运行。错误信息模糊,不确定是模拟器性能问题还是其他根本原因,目前无法在真机测试。崩溃并非立即发生,添加折线后缩小地图时崩溃频率最高。
初始实现代码
let path = GMSMutablePath() for coordinate in route.polyline.geoJsonLinestring.coordinates { path.add(CLLocationCoordinate2D(latitude: coordinate[1], longitude: coordinate[0])) print(coordinate) } let bounds = GMSCoordinateBounds(path: path) let cameraUpdate = GMSCameraUpdate.fit(bounds, withPadding: 16) DispatchQueue.main.async { [self] in let polyline = GMSPolyline(path: path) polyline.strokeColor = UIColor(named: "AccentColor")! polyline.strokeWidth = 5 polyline.map = mapView mapView?.moveCamera(cameraUpdate) }
后续排查尝试
- 修改
Edit Scheme中的GPU Frame Capture设置,无效果 - 创建仅包含地图和硬编码两点折线的简化视图,仍会崩溃,代码如下:
override func viewDidLoad() { super.viewDidLoad() var coordinates = [ [-2.9287110999999997, 54.8929171], [-2.8932368, 54.8968314], ] let path = GMSMutablePath() for coordinate in coordinates { path.add(CLLocationCoordinate2D(latitude: coordinate[1], longitude: coordinate[0])) } let bounds = GMSCoordinateBounds(path: path) let cameraUpdate = GMSCameraUpdate.fit(bounds, withPadding: 16) let polyline = GMSPolyline(path: path) polyline.strokeColor = UIColor(named: "AccentColor")! polyline.strokeWidth = 10 polyline.map = mapView mapView?.moveCamera(cameraUpdate) }
补充信息
Google Maps在模拟器中整体性能极差,地图视图通常需要1分钟以上才能完全加载(先显示带Google标志的灰色视图,之后才加载地图瓦片),上述简化视图中地图完全加载后约1分钟就会崩溃。
内容的提问来源于stack exchange,提问作者alstr
相关产品推荐
相关产品推荐

