Это только что случилось со мной, и я верю, что у меня есть ответ.
Проблема, похоже, заключается в добавлении аннотаций к виду карты. Кажется, что когда вы вызываете addAnnotations для экземпляра MKMapView, объект MKMapView не сохраняет эти объекты. Поэтому после того, как вы поэкспериментируете с картой и переместите аннотации в и из поля зрения, когда придет время перерисовать аннотации, память будет освобождена, и вы получите ошибку EXC_BAD_ACCESS.
Чтобы решить эту проблему, просто оставьте объекты для добавления в качестве аннотаций. Это может быть достигнуто наличием переменной экземпляра NSMutableArray текущих аннотаций карт. Каждый раз, когда вы вызываете addAnnotations, также добавляйте эти объекты в этот сохраненный массив, и все должно быть готово.
В вашем .h файле:
@interface MapViewController : TTModelViewController <MKMapViewDelegate, UIAlertViewDelegate> {
NSMutableArray *feeds;
}
@property (nonatomic, retain) NSMutableArray *feeds;
В вашем файле .m:
@synthesize feeds;
// (release feeds in your dealloc)
А когда вы добавляете аннотации, делайте что-то вроде этого:
if (self.feeds == nil) {
self.feeds = [NSMutableArray array];
}
[self.feeds addObjectsFromArray:newPois]; // newPois is an array of annotations
[mapView addAnnotations:newPois];
Работаю для меня до сих пор. Буду обновлять, если все изменится. Если вы удалите объекты из вида карты, вы, вероятно, также захотите синхронизировать этот массив каналов, чтобы избежать «мертвой памяти».