由于内存警告,我最近需要使用Allocations测试我的应用。即使没有泄漏,堆也会随着添加到地图中的注释而不断增长。每次放大或缩小时,旧的注释都会被删除,新的注释会被创建并添加到地图中:
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;
}
init看起来像这样:
-(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的正常行为?
谢谢!
答案 0 :(得分:0)
你有没有理由不使用
[mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
方法?
好像你每次都在为注释创建视图!