ios - HERE map ios 的内存压力

标签 ios memory maps out-of-memory here-api

我在我的一个应用程序中使用 HERE map 。而且我必须至少在 3-4 个屏幕上显示 map 。因此内存中会一直加载 3-4 个 map 实例。

我注意到加载一个 HERE map 实例会消耗多达 50MB 的内存。一旦我移动到其他屏幕,就会加载两个 map 实例。内存跳到 100MB 等等。最后,在使用一段时间后,应用程序因内存问题而崩溃。

“2017 年收到内存压力通知(严重)”

我正在通过 pod 添加购买的 HERE map 版本。这有什么区别吗?

还有一件事我注意到,每次我更改 HERE map 的框架,即增加/减少它的高度,它似乎重新加载 map ,这再次消耗大量内存。

有人用 HERE map ios 版本遇到过这个问题吗??

最佳答案

我在 iOS 中找到了释放内存压力的解决方案(HereMap)。

我在我的应用程序中使用了 3 个 map (HereMap) 屏幕,这个解决方案对我有效并且释放大约 100MB 的内存。

您需要在 viewDidAppear 中初始化您的 map ,并在 viewDidDisappear 中删除您的 map 。

我在我的应用程序中使用了 3 个 map ,在

中使用了初始化 View
-(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;
}

关于ios - HERE map ios 的内存压力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47043275/

相关文章:

c++ - 如何对多映射中的键和值进行排序?

ios - 如何检测我的 iOS 应用内浏览器中的链接是否会启动 App Store?

ios - 使用 SwiftyJSON 从 JSON 读取数据时返回 Null

c# - 使用 C# Cheat Engine 中的指针

php - 我的 PHP 应用程序内存泄漏(使用 Codeigniter 框架构建)

android - 以编程方式清除 Android map 历史记录

ios - Swift - 将两个数组元素添加到tableView中的detailTextLabel

ios - 在 iPhone/iPod/iPad 上调用电话

linux - 限制Linux进程内存

java - 打印出映射的键和值