三方管理iOS DeveloperiOS 开发

IOS开发中使用高德地图所遇到的问题

2016-02-17  本文已影响9661人  Hither

A页面上放一个UITableView,它的每个单元格是不同药店的信息,点击以后会跳转到B页面,查看到相关药店的路线图 和 导航。最开始在B负责地图的一系列创建,程序没有问题,然而当我不断在这两个页面之间进行切换的时候,问题来了:程序崩溃 原因是内存泄露。

解决的办法:A页面生成一个mapView,然后大家共用它,而不是每次点击单元格都创建一个地图。因为A页面和B页面切换速度过快,地图绘制是很耗时间的,地图还没有创建出来就退出,有时候就会导致内存泄露-->crash。

在A页面进行地图的创建 但不设置代理!

@property (nonatomic, strong) MAMapView *mapView;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    medicineShopModel *model = dataArray[indexPath.row];
    MapViewController *map = [[MapViewController alloc]init];
//在点击单元格的时候将上面创建的mapView赋值给B页面的声明mapView。
    map.mapView = self.mapView;
//将模型中的经纬度 分别赋值给map对象的属性
    map.lt = model.x;
    map.at = model.y;
    [self.navigationController pushViewController:map animated:YES];
}
//初始化mapView
- (void)initMapView
{
    self.mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
}

接下来对B页面进行修改

//首先声明如下属性
@property (nonatomic,assign) CGFloat at;
@property (nonatomic,assign) CGFloat lt;
@property (nonatomic,strong) MAMapView *mapView;
//为该页面的mapView设置frame,然后设置各种代理 遵循协议实现方法
self.mapView.frame = CGRectMake(0, 64, WIDTH, HEIGHT/2-50);
myLocationManager.delegate = self;
self.mapView.delegate = self;
search = [[AMapSearchAPI alloc]initWithSearchKey:@"2b5443e0ea031a20891d4bb8369a4a77" Delegate:self];
上一篇下一篇

猜你喜欢

热点阅读