最近、メモリの警告が発生したため、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の通常の動作ですか?
ありがとう!