iOS supprimant les superpositions MKMapView ne fonctionnant pas

Je voudrais enlever toutes les superpositions de ma carte à un moment donné, et j'ai essayé de différentes manières, mais il ne fonctionne jamais.

Dernier essai, je n'ai [self.mapView removeOverlays:self.mapView.overlays]; et cela ne fonctionne toujours pas. Une idée de comment je peux supprimer ces superpositions?

Merci.

Mise à JOUR de 1

J'ai l'erreur: malloc: *** error for object 0x5adc0c0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

Je pense que je sais pourquoi, mais ne sais vraiment pas comment le résoudre...
Voici le code quand j'ai besoin de tirer une autre ligne sur mon mapView:

//Create a c array of points. 
MKMapPoint *pointsArray = malloc(sizeof(CLLocationCoordinate2D) * 2);

//Create 2 points.
MKMapPoint startPoint = MKMapPointForCoordinate(CLLocationCoordinate2DMake(oldLatitude, oldLongitude));
MKMapPoint endPoint = MKMapPointForCoordinate(CLLocationCoordinate2DMake(newLatitude, newLongitude));

//Fill the array.
pointsArray[0] = startPoint;
pointsArray[1] = endPoint;

//Erase polyline and polyline view if not nil.
if (self.routeLine != nil) {
    [_routeLine release];
    self.routeLine = nil;
}

if (self.routeLineView != nil) {
    [_routeLineView release];
    self.routeLineView = nil;
}

//Create the polyline based on the array of points.
self.routeLine = [MKPolyline polylineWithPoints:pointsArray count:2];

//Add overlay to map.
[self.mapView addOverlay:self.routeLine];

//clear the memory allocated earlier for the points.
free(pointsArray);

//Save old coordinates.
oldLatitude = newLatitude;
oldLongitude = newLongitude;

J'ai donc communiqué de la routeLine objet qui est la superposition précédente. Alors quand j'ai essayé de l'enlever, il se bloque parce qu'il a déjà été libéré.

Voici le code pour la mapView délégué pour l'ajout de superposition de points de vue:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
    MKOverlayView* overlayView = nil;

    if(overlay == _routeLine) {
        //If we have not yet created an overlay view for this overlay, create it now. 
        if(self.routeLineView == nil) {
            self.routeLineView = [[[MKPolylineView alloc] initWithPolyline:_routeLine] autorelease];

            self.routeLineView.fillColor = [UIColor blueColor];
            self.routeLineView.strokeColor = [UIColor blueColor];

            //Size of the trace.
            self.routeLineView.lineWidth = routeLineWidth;
        }

        overlayView = self.routeLineView;
    }

    return overlayView;
}

Si vous le savez comment je peux résoudre ce problème, en supprimant toutes les superpositions de mon MKMapView ce serait génial!

Mise à JOUR 2

J'ai essayé de ne pas déclencher mon routeLine et routeLineView des objets et cela fonctionne maintenant. Il semble qu'il n'y a pas de fuites. Alors maintenant, je suis en train de faire ceci:

//Erase polyline and polyline view if not nil.
if (self.routeLine != nil) {
    //[_routeLine release];
    self.routeLine = nil;
}

if (self.routeLineView != nil) {
    //[_routeLineView release];
    self.routeLineView = nil;
}

source d'informationauteur Dachmt