似乎无法删除任何注释

时间:2010-10-19 17:43:56

标签: objective-c mkmapview mkannotation mkannotationview

我有一些用户可以添加的引脚。在标注中有一个按钮。 当用户按下按钮时,我想要一个新的引脚放在该位置,我想摆脱用户按下的引脚(不同类型的引脚)。

基本上第一个引脚是可拖动的,当用户找到合适的位置时,它们将“锁定”它。 (锁定引脚在几个方面的作用不同,这就是我需要更换旧引脚的原因)

无论如何,这是我处理的方法。当我到[mapView removeAnnotation:view.annotation];我得到的部分是“程序接收信号:”EXC_BAD_ACCESS“。”

有人可以帮我吗? (问题不在于新的注释没有出现,因为它确实出现了。问题是旧的注释不会消失)。 编辑:根据建议固定代码。

    - (void) mapView:(MKMapView *)MapView   
      annotationView:(MKAnnotationView *)view 
calloutAccessoryControlTapped:(UIControl *)control {
    LockedPotholeAnnotation *annotation = [[[LockedPotholeAnnotation alloc] initWithCoordinate:view.annotation.coordinate addressDictionary:nil]autorelease];
     NSString *titleString = [NSString stringWithFormat:@"Pothole at %.4f, %.4f", view.annotation.coordinate.latitude, view.annotation.coordinate.longitude];
     annotation.title = titleString;
     [mapView addAnnotation:annotation];
     //[annotation release];
     NSLog(@"Added Pin");
     NSLog(@"VA: %@", [view.annotation class]);
     [mapView removeAnnotation:view.annotation];
     //[mapView removeAnnotations:mapView.annotations];
     [mapView setNeedsDisplay]; 
}

1 个答案:

答案 0 :(得分:1)

这可能不是唯一的事情,但跳出来的第一件事就是autoreleasealloc行上的注释release。因此,在将其添加到mapView后,您不应该{{1}}。

就这一点而言,当自动释放池耗尽时,注释可能会过早释放 - 如果不是那么,那么在某个后续的时间点仍然是过早的。地图视图将被陈旧的指针和繁荣所困扰。

不确定为什么会在你描述的时候立即表现出来,所以可能还有别的......