Esto me pasó a mí y creo que tengo la respuesta.
El problema parece ser agregar anotaciones a una vista de mapa. Parece que cuando llamas "addAnnotations" en una instancia MKMapView, el objeto MKMapView no retiene esos objetos. Entonces, después de jugar con el mapa y mover las anotaciones dentro y fuera de la vista, cuando llega el momento de volver a hacer las anotaciones, la memoria se ha liberado y se obtiene un error EXC_BAD_ACCESS.
Para resolver esto, solo retenga los objetos para agregarlos como anotaciones. Esto se puede lograr teniendo una variable de instancia NSMutableArray de las anotaciones actuales de los mapas. Cada vez que llame a addAnnotations, también agregue esos objetos a esta matriz retenida y debería estar todo listo.
En su archivo .h:
@interface MapViewController : TTModelViewController <MKMapViewDelegate, UIAlertViewDelegate> {
NSMutableArray *feeds;
}
@property (nonatomic, retain) NSMutableArray *feeds;
En el archivo .m:
@synthesize feeds;
// (release feeds in your dealloc)
Y cuando va a añadir anotaciones, hacer algo como esto:
if (self.feeds == nil) {
self.feeds = [NSMutableArray array];
}
[self.feeds addObjectsFromArray:newPois]; // newPois is an array of annotations
[mapView addAnnotations:newPois];
Trabajando para mí hasta ahora. Se actualizará si las cosas cambian. Si elimina objetos de la vista de mapa, probablemente también desee mantener esta matriz de fuentes sincronizada para evitar "memoria inactiva"."
Bueno, fue una de las primeras cosas en las que pensé. He revisado mi código dos veces, no hay una versión doble ... Lo extraño es que solo ocurre de vez en cuando. También tener algunos objetos MKPinAnnotationView en el mapa. –
solo sucede intermitentemente, probablemente significa que hay una condición de carrera. De todos modos, su mensaje de error nos dice que hay una versión doble, no nos da nada más para trabajar. ¿Qué espera? – hop
Sí, lo sé, pero el problema ocurre incluso con una simple vista de MKMapView sin otra cosa. Intenté creando un nuevo archivo con el .XIB asociado, agregué un MKMapView, jugué con el mapa y obtuve el mismo error. Así que me preguntaba si fue un problema relacionado con el marco y si alguien más se ha enfrentado al mismo problema. –