适用于 iOS 的 Google Maps SDK 不断增加内存使用量

Posted

技术标签:

【中文标题】适用于 iOS 的 Google Maps SDK 不断增加内存使用量【英文标题】:Google Maps SDK for iOS keeps increasing usage of memory 【发布时间】:2013-10-27 07:13:36 【问题描述】:

我已经构建了一个在地图上显示标记的简单应用程序,并且我从服务器的 JSON 文件中加载了它的 x,y,这些标记是可点击的,因此一旦您在任何标记上,它就会将您带到另一个 UIViewController (让我们将其命名为BViewController)。我已经监控了内存使用情况,所以每次我从BViewController 回到MapViewController(里面的地图)它只是内存使用量的两倍,我试图将它设置为nill 或从@987654327 中删除它@ ,但没有任何改变

我的项目使用 ARC

所以请知道如何减少这种使用。 提前致谢

【问题讨论】:

如果 Google Maps SDK 发生内存泄漏,您可能无能为力。首先使用Instruments 检查它不是您的应用程序。也可以考虑使用内置的 Apple 地图。 @RoboticCat 感谢您的回复 :) ,我检查了很多次,但出现了这个问题,我认为是因为重新加载 MapView 并重新分配前一个,您知道如何避免重新加载 我猜这与code.google.com/p/gmaps-api-issues/issues/detail?id=5941 的错误报告有关,是吗?如果是这样,您可以在 MyViewController 中保存对 MapViewController 的引用,因此每次导航到子视图控制器时都不需要重新创建它。 是的,完全相同的问题 :( 感谢您的回复 有关于这个问题的更新吗? 【参考方案1】:

如果不查看更多代码,我无法立即说出导致此问题的原因,但是对于像 GMSMapView 这样的“昂贵”对象,我可能会创建一个类别来创建共享 GMSMapView 并以编程方式添加它(如果您还没有这样做的话) .您的类别可能如下所示:

// GMSMapView+MyAdditions.h
#import <GoogleMaps/GoogleMaps.h>
@interface GMSMapView (MyAdditions)
  + (GMSMapView *)sharedMapView;
@end


// GMSMapView+MyAdditions.m
#import "GMSMapView+MyAdditions.h"
@implementation GMSMapView (MyAdditions)

+ (GMSMapView *)sharedMapView 
  static GMSMapView *mapView;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^
    CLLocation *location = [[CLLocation alloc] initWithLatitude:40.7127 longitude:-74.0059];
    GMSCameraPosition *cameraPosition = [GMSCameraPosition cameraWithLatitude:location.coordinate.latitude
                                                                    longitude:location.coordinate.longitude
                                                                         zoom:16.0];
    mapView = [GMSMapView mapWithFrame:[UIScreen mainScreen].bounds camera:cameraPosition];
  );
  return mapView;


@end

【讨论】:

没有内存泄漏吗?

以上是关于适用于 iOS 的 Google Maps SDK 不断增加内存使用量的主要内容,如果未能解决你的问题,请参考以下文章

在使用适用于 iOS 的 Google Maps SDK 和适用于 iOS 的 Google Places 时,我找不到在哪里可以获得 POI 结果

带有适用于 iOS 的 Google Maps SDK 的可拖动标记

使用适用于 iOS 的 Google Maps SDK 优化自定义标记图像性能

适用于 iOS 的 Google Maps SDK 不断增加内存使用量

适用于 iOS 的 Google Maps SDK 要求 GoogleMaps.bundle 成为“复制捆绑资源”下目标的一部分

发布到 App Store 后,适用于 iOS 的 Google Maps SDK 崩溃