首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除注释时出现的问题

删除注释时出现的问题
EN

Stack Overflow用户
提问于 2010-09-30 18:05:20
回答 1查看 418关注 0票数 0

我试图遍历所有的映射、注释并检查它是否是MKUserLocation注释。如果不是,我想移除它,这样我就可以添加一些其他的。我试图使用下面的代码,但它崩溃了w /the以下错误:“终止应用程序由于未登录的异常'NSGenericException',原因:'* Collection <__NSArrayM: 0x1645d0>是在被枚举时发生变异的。”

代码语言:javascript
运行
复制
for(id a in [[self mapview] annotations]) {

     if([a class] != [MKUserLocation class]) {

          [[self mapview] removeAnnotation:a];

     }

}

我如何正确地循环遍历所有注释并删除它们,同时仍然确保不删除userLocation标记。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-30 18:30:50

尝试对注释数组的副本进行操作,该数组应该仍然工作。

代码语言:javascript
运行
复制
NSArray *annotationsCopy = [self.mapView.annotations copy];
for(id a in annotationsCopy) {
     if([a class] != [MKUserLocation class]) {
          [[self mapview] removeAnnotation:a];
     }
}
[annotationsCopy release];

如果在此过程中将注释添加到map视图中,则不会删除注释。

看起来,map视图在内部使用一个可变数组,在删除对象的同时循环遍历它将使其处于不可维持的状态。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3833478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档