谷歌地图 iOS SDK 的内存使用不断增加

7
我已经建立了一个简单的应用程序,可以在地图上显示标记,并从服务器上的JSON文件中加载x,y。这些标记是可单击的,因此一旦您点击任何标记,它将带您进入另一个UIViewController(我们称之为BViewController)。我已监测了内存使用情况,所以每次我从BViewController返回到MapViewController(其中包含地图)时,内存使用量就会翻倍。我试图将其设置为nill或从superView中删除它,但没有任何变化。
我的项目使用ARC。
请问有什么办法可以减少这种内存使用呢?
提前感谢您的回答。

如果Google Maps SDK存在内存泄漏问题,你可能无法做太多事情。首先使用"Instruments"检查是否是你的应用程序出现了问题。此外,考虑使用内置的Apple Maps。 - Robotic Cat
@RoboticCat 感谢您的回复 :) ,我已经检查了很多次,但是我认为这个问题发生是因为重新加载MapView并释放先前的MapView。您有什么想法可以避免重新加载吗? - mustafa96m
1
我猜这与 https://code.google.com/p/gmaps-api-issues/issues/detail?id=5941 的错误报告有关,是吗?如果是这样,您可以在 MyViewController 中保留对 MapViewController 的引用,因此每次导航到子视图控制器时都不需要重新创建它。 - Brett
是的,完全相同的问题 :( 谢谢你的回复。 - mustafa96m
这个问题有任何更新吗? - tryKuldeepTanwar
1个回答

0

如果没有看到更多的代码,我无法立即确定是什么导致了这个问题,但对于像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

内存泄漏了吗? - mustafa96m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接