2010-10-19 69 views
1

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

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

反正,这是我做我的处理的方法。当我到达[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

这可能不是唯一的东西,但跃起出来的第一件事情是,你autorelease就行了,你alloc它的注解。因此,在将它添加到mapView之后,您不应该也release

由于这一站,注释可能会被过早地释放时自动释放池,水渠 - 如果不是完全的话,那么在某些后续点仍为时过早。地图视图将停留在一个陈旧的指针和繁荣。

不知道为什么这样做很只要你形容别的表现,所以有可能是东西太多......

+0

啊,我可以看到的错误。除此之外,我似乎没有与新的注释有关的问题。新的“锁定”注释出现,但旧的注释并未消失,事实上这是问题。 – 2010-10-19 18:19:01

+0

@DJ在这种情况下,很难说 - 代码似乎没有明显错误,所以问题可能在其他地方。在尝试删除之前,检查'view'中传递的是否确实是正确的,并且'view.annotation'在地图视图的'annotations'数组中。如果您在添加新注释之前执行了删除操作,那么删除操作是否有效?如果你根本不添加新的?当你删除所有内容时会发生什么,就像在注释掉的行中一样? ETC - 抱歉,我不能提出什么比基本调试苦差事更有帮助... – walkytalky 2010-10-20 10:41:19

+0

原来,在这里我补充说明原来的地方,我也有额外的版本在那里。当我尝试删除所述注释时,它将其拧紧。删除该线固定它。非常感谢。 – 2010-10-21 14:05:12