我正在我的一个应用程序中使用HERE地图。我必须在至少3-4个屏幕上显示地图。因此,将有3-4个地图实例加载到内存中。
我注意到的是,加载HERE地图的一个实例需要消耗高达50MB的内存。一旦我移动到另一个屏幕,两个map实例就会被加载。内存跳跃到100MB,以此类推。最后,在使用了一段时间后,应用程序因内存问题而崩溃。
“收到内存压力通知(严重) 2017”
我正在通过pods添加HERE地图的购买版本。这有什么不同吗?
还有一件事,我注意到,每次我改变这里的地图框架,即增加/减少其高度,它似乎重新加载地图,这再次消耗了相当大的内存。
有没有人用这里的地图ios版本面对这个问题??
发布于 2019-11-08 13:15:20
我找到了一个在iOS (HereMap)中释放内存压力的解决方案。
我在我的应用程序中使用3个地图(HereMap)屏幕,这个解决方案适用于我和释放大约100MB的内存。
您需要在viewDidAppear中初始化地图,并在viewDidDisappear中删除地图。
我在我的应用程序和初始化视图中使用了3地图
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
dispatch_async(dispatch_get_main_queue(), ^{
if (self->mapView == nil) {
self->mapView = [[NMAMapView alloc] initWithFrame:self.view.frame];
[self.view addSubview:self->mapView];
[self.view sendSubviewToBack:self->mapView];
}
[self mapSetup];
});
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self removeMemoryForMapView];
}
-(void)removeMemoryForMapView {
mapView.positionIndicator.visible = false;
mapView.landmarksVisible = false;
mapView.delegate = nil;
mapView.gestureDelegate = nil;
mapView.safetySpotsVisible = false;
[mapView setVisibility:false forPoiCategory:NMAMapPoiCategoryAll];
[mapView removeFromSuperview];
mapView = nil;
}发布于 2017-11-01 21:08:47
如果您使用的是MapKit或Google Maps SDK for iOS,则没有编写代码,但我假设您使用的是原生MapKit。我不认为是地图对你的应用大小有那么大的影响,因为地图缓存是共享的。MKMapView有自己的缓存,其中包含最近显示的地图,因此当设备离线时,您仍然可以显示上次查看的地图。您可以尝试使用以下解决方案清除缓存:How can I clear MKMapView's cache of map tiles?
我建议您创建共享MapViewController,您可以将其嵌入到您的应用程序中需要地图的所有其他控制器中。
https://stackoverflow.com/questions/47043275
复制相似问题