7

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

我的项目使用ARC

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

4

1 回答 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
于 2016-11-21T20:41:24.007 回答