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]; 
}
4

1 回答 1

1

这可能不是唯一的事情,但首先跳出来的是你autorelease在你所在的行上的注释alloc。因此release,在将其添加到mapView.

就目前而言,当自动释放池耗尽时,注释可能会过早地被解除分配——如果不是完全如此,那么在随后的某个时间点仍然为时过早。地图视图将卡在过时的指针和繁荣中。

不知道为什么这会在你描述的时候立即显现,所以可能还有别的东西......

于 2010-10-19T17:53:51.293 回答