Если вы не используете ARC, то вы должны освободить объект после добавления его в вид карты.
Например:
MKPointAnnotation *annot1 = [[MKPointAnnotation alloc] init];
annot1.title = @"A";
annot1.subtitle=@"A1";
annot1.coordinate = CLLocationCoordinate2DMake(21.978954, 120.752663);
[mapView addAnnotation:annot1];
Должен быть обновлен до:
MKPointAnnotation *annot1 = [[MKPointAnnotation alloc] init];
annot1.title = @"A";
annot1.subtitle=@"A1";
annot1.coordinate = CLLocationCoordinate2DMake(21.978954, 120.752663);
[mapView addAnnotation:annot1];
[annot1 release]
Причина в том, что счетчик ссылок на ваш объект никогда не достигнет нуля и объект никогда не будет освобожден.
MKPointAnnotation *annot1 = [[MKPointAnnotation alloc] init];
Когда вы выделяете объект, он имеет счетчик ссылок 1. Если вы добавляете объект в массив или словарь, счетчик ссылок увеличивается. Итак, после следующего блока кода у вас счетчик ссылок равен два.
MKPointAnnotation *annot1 = [[MKPointAnnotation alloc] init];
annot1.title = @"A";
annot1.subtitle=@"A1";
annot1.coordinate = CLLocationCoordinate2DMake(21.978954, 120.752663);
[mapView addAnnotation:annot1]
Теперь, если вы вызываете release на annot1 после того, как добавляете его в представление карты, объект еще не выпущен. Это потому, что структура данных в вашем картографическом представлении содержит ссылку на него.
[mapView addAnnotation:annot1]
Как только вы закончите с вашим просмотром карты, и он будет выпущен, annot1 будет окончательно уничтожен.