MKAnnotationView problema de scurgere de memorie

Aveam nevoie de recent să-mi testez aplicația cu alocări din cauza avertismentelor legate de memorie. Chiar și în cazul în care nu există scurgeri, heapul continuă să crească cu adnotările adăugate pe hartă. De fiecare dată când mărim sau micșorează, vechile adnotări sunt eliminate, noi sunt create și adăugate pe hartă:

enter image description here

Toate locațiile de memorie din grupul NumberedAnnotationView prezintă linia marcată ca fiind problematică în vedereaFotAnnotare

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )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;
}

Initul arată astfel:

-(id)initWithAnnotation:(id)annotation reuseIdentifier:(NSString *)reuseIdentifier imageType:(int)imageType {

    self = [super initWithAnnotation: annotation reuseIdentifier: reuseIdentifier]; //THIS line
    if (self != nil)
    {
    //set stuff 
    } 
    return self;
}

Chiar și după câteva minute, aceste obiecte autorelelate sunt încă acolo. (17 și 24 este numărul de adnotări afișate pe hartă și eliminate cu [mapView removeAnnotations: [mapView adnotations]]; de fiecare dată când mărim/scot.

Ceilalți, cred, sunt niște lucruri generate de MapKit. Experimentez acest lucru în simulator cu versiunile 5.0 și 5.1.

Cum aș putea rezolva asta? Este ceva ce am lipsit? Sau este acesta comportamentul normal al Mapkit?

Mulțumiri!

0

1 răspunsuri

Există vreun motiv pentru care nu utilizați

[mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];

metodă?

Se pare că creați vizualizare pentru adnotările dvs. de fiecare dată!

Check out this article: http://www.highoncoding.com/Articles/804_Introduction_to_MapKit_Framework_for_iPhone_Development.aspx

0
adăugat
Mă bucur că am reușit să ajut! Bucurați-vă de programarea iOS :)
adăugat autor azamsharp, sursa
Am vrut să fiu sigur că nu folosesc niciun fel de imagini și alte lucruri care ar putea provoca "cache", așa că am comentat acest lucru temporar.
adăugat autor Templar, sursa
Omfg, nu pot să cred, dar cu dequeueReusableAnnotationViewWithIdentifier funcționează perfect, nu mai există viziuni de adnotări. Știu că MKAnnotationViews sunt concepute să fie refolosite, dar nu cred că provoacă astfel de probleme de memorie dacă nu ... Mulțumesc foarte mult!
adăugat autor Templar, sursa