This just happened to me and I believe I have the answer.
The problem seems to be with adding annotations to a map view. It seems that when you call "addAnnotations" on a MKMapView instance, the MKMapView object does not retain those objects. So after you play around with the map, and move the annotations in and out of view, when it comes time to re-render the annotations, the memory has been released, and you get a EXC_BAD_ACCESS error.
To solve this, just retain the objects to add as annotations. This can be accomplished by having a NSMutableArray instance variable of the maps current annotations. Every time you call addAnnotations, also add those objects to this retained array and you should be all set.
In your .h file:
@interface MapViewController : TTModelViewController <MKMapViewDelegate, UIAlertViewDelegate> {
NSMutableArray *feeds;
}
@property (nonatomic, retain) NSMutableArray *feeds;
In your .m file:
@synthesize feeds;
// (release feeds in your dealloc)
And when you're adding annotations, do something like this:
if (self.feeds == nil) {
self.feeds = [NSMutableArray array];
}
[self.feeds addObjectsFromArray:newPois]; // newPois is an array of annotations
[mapView addAnnotations:newPois];
Working for me so far. Will update if things change. If you remove objects from the map view, you'll probably also want to keep this feeds array in sync, to avoid "dead memory."