我正在开发一个项目,其中有一个带有MapView的 ViewController 。
现在这个页面被加载并关闭了几次。
我首先实现的是,我在 xib 中添加了 MapView,然后每次加载此页面时,实时数据会增加 10mb。
解决方案1
然后在对这个问题进行研究之后,我发现对MKMapView使用单个对象并在AppDelegate中定义它并一直使用它。
我试过这个,它在一定程度上减少了内存使用量,但由于Received Memory Warning导致应用程序再次崩溃。
现在,如果我在崩溃后再次启动该应用程序,那么它曾经在第一次打开 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 的超级视图中删除。
即使这也没有任何区别。
知道如何克服这个问题吗?
谢谢