由于内存警告,我最近需要使用分配测试我的应用程序。即使没有泄漏,堆随着添加到地图的注释而不断增长。每次放大或缩小时,旧的注释都会被删除,新的注释会被创建并添加到地图中:
NumberedAnnotationView 组中的所有内存位置都将标记线显示为 viewForAnnotation 中的问题
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
static NSString *reuseId_big = @"bigcircle";
NumberedCircleAnnotationView * nca = nil;
//nca = (NumberedCircleAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:reuseId_big];
if ( nca == nil )
nca = [[[NumberedCircleAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId_big imageType:1] autorelease]; // THIS line
nca.delegate = self;
}
return nca;
}
初始化看起来像这样:
-(id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier imageType:(int)imageType {
self = [super initWithAnnotation: annotation reuseIdentifier: reuseIdentifier]; // THIS line
if (self != nil)
{
// set stuff
}
return self;
}
即使几分钟后,这些自动释放的对象仍然存在。( 17 和 24 是地图上显示的注释数量,[mapView removeAnnotations:[mapView annotations]];
每次放大/缩小时都会删除。
其他的,我认为,是一些 MapKit 生成的东西。我在 5.0 和 5.1 版本的模拟器中遇到了这种情况。
我该如何解决这个问题?是我想念的东西吗?或者这是 Mapkit 的正常行为吗?
谢谢!