Iphone 删除批注时出现的问题

Iphone 删除批注时出现的问题,iphone,Iphone,我正在尝试遍历所有的maps注释,并检查它是否是MKUserLocation注释。如果不是,我想删除它,这样我可以添加一些其他的。我试图使用下面的代码,但它崩溃了,并出现以下错误:“由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“*集合在枚举时发生了变异。” 如何正确循环所有注释并将其删除,同时仍确保未删除userLocation标记。尝试操作注释数组的副本,该副本应仍然有效 NSArray *annotationsCopy = [self.mapView.an

我正在尝试遍历所有的maps注释,并检查它是否是MKUserLocation注释。如果不是,我想删除它,这样我可以添加一些其他的。我试图使用下面的代码,但它崩溃了,并出现以下错误:“由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“*集合在枚举时发生了变异。”


如何正确循环所有注释并将其删除,同时仍确保未删除userLocation标记。

尝试操作注释数组的副本,该副本应仍然有效

NSArray *annotationsCopy = [self.mapView.annotations copy];
for(id a in annotationsCopy) {
     if([a class] != [MKUserLocation class]) {
          [[self mapview] removeAnnotation:a];
     }
}
[annotationsCopy release];
如果在地图视图运行时将注释添加到地图视图,则不会删除注释


看起来map视图在内部使用了一个可变数组,在移除对象时循环该数组将使其处于不稳定状态

尝试操作annotations数组的一个副本,它应该仍然可以工作

NSArray *annotationsCopy = [self.mapView.annotations copy];
for(id a in annotationsCopy) {
     if([a class] != [MKUserLocation class]) {
          [[self mapview] removeAnnotation:a];
     }
}
[annotationsCopy release];
如果在地图视图运行时将注释添加到地图视图,则不会删除注释


看起来map视图在内部使用了一个可变数组,在移除对象时循环该数组将使其处于不稳定状态

谢谢。这正是我所需要的:)谢谢。这正是我所需要的:)