5

我正在制作一个使用 SKMap (Skobbler) 的 iOS 应用程序。SKMap 打开时,我的应用程序会消耗大量内存。更重要的是,当我移动到应用程序的其他页面时,它不会释放内存。

我在 viewWillDisappear 方法中放了一些代码来释放 SKMap 的内存,

[[SKRoutingService sharedInstance].mapView clearAllAnnotations];
[SKRoutingService sharedInstance].routingDelegate = nil;
[SKRoutingService sharedInstance].navigationDelegate=nil;
[[AudioService sharedInstance]cancel];
[[SKRoutingService sharedInstance]stopNavigation];
[[SKRoutingService sharedInstance]clearCurrentRoutes];
[[SKRoutingService sharedInstance]clearAllRoutesFromCache];
[SKRoutingService sharedInstance].mapView = nil;

//self.mapView is SKMap
self.mapView.settings.displayMode = SKMapDisplayMode2D;
self.mapView.delegate=nil;
[self.mapView removeFromSuperview];
self.mapView=nil;

如果您有任何解决方案来为此释放内存,请帮助我。

4

1 回答 1

0

我写信问他们这个问题,收到了这样的回复:

在内部,C++ 代码使用 1 个地图单例,并且即使在 iOS 地图视图被销毁后也会保持地图实例处于活动状态——您不能强制 C++ 库在 iOS/Android 级别释放内存。在人们认为快速“地图恢复”过程比小内存占用更重要的日子里,这个实施决定被收回了。

于 2016-08-29T18:11:12.890 回答