繁体   English   中英

加载MapView时收到的内存警告

[英]Received Memory Warning when MapView is loaded

我正在一个项目中,其中有一个带有MapView的ViewController。

现在,此页面已加载和关闭了几次。

我首先实现的是,我在xib中添加了MapView,然后每次加载此页面时,实时咬合通常会增加10mb。

解决方案1

然后,在对该问题进行了研究之后,我发现使用MKMapView的单个对象并在AppDelegate中对其进行定义并一直使用它。

我尝试了一下,它在某种程度上降低了内存使用率,但过了一段时间,由于收到内存警告 ,应用程序崩溃了。

现在,如果我在崩溃后再次启动该应用程序,那么它曾经在打开MapView页面时第一次崩溃,此时的实时咬合只有11mb左右

这是在AppDelegate中添加mapview的代码

 mapView=[[MKMapView alloc]initWithFrame:CGRectMake(0, 0, 300, 450)]; 

[self.window addSubview:mapView]; 

mapView.delegate=self; 

mapView.hidden=YES;

这是我用来加载Mapview的代码。

- (void)viewDidLoad
{
    [super viewDidLoad];

    latittude=[[[NSUserDefaults standardUserDefaults]valueForKey:@"LATITUDE"] floatValue];
    longitude=[[[NSUserDefaults standardUserDefaults] valueForKey:@"LONGITUDE"] floatValue];

    APPDELEGATE.mapView.frame=CGRectMake(0, 140, 320, 290);

}

-(void)viewDidAppear:(BOOL)animated
{
    APPDELEGATE.mapView.hidden=NO;

    CLLocationCoordinate2D location;
    location.latitude  = latittude;
    location.longitude = longitude;

    Annotation *a;
    a=[[Annotation alloc]initWithCoordinate:location];
    [APPDELEGATE.mapView addAnnotation:a ];
}

-(void)viewWillDisappear:(BOOL)animated
{
    APPDELEGATE.mapView.hidden=YES;
}   

解决方案2

我发现的第二个解决方案是在视图消失时更改MapView类型。

因此,我更改了其类型,将其委托更改为nil,并从ViewWillDisappear的superview中删除了它。

即使这样也没有任何区别。

知道如何解决这个问题吗?

谢谢

在应用程序委托中存储MapView似乎有点奇怪。 我将像您最初那样将其包含在单个控制器中。

我首先实现的是,我在xib中添加了MapView,然后每次加载此页面时,实时咬合通常会增加10mb。

这是您的问题,看起来像是内存泄漏。 如果正确处理对象/内存,则应用程序大小不应增加。 确保您使用的是arc并检查是否在viewWillDisappear方法中将所有必需的对象(例如NSTimers,NSNotifications)设置为nil。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM