我们如何在MKMapView动画或移动时暂停添加注释。 [iPhone SDK 3]

时间:2009-12-28 10:46:21

标签: iphone mapkit mkmapview annotations nsoperationqueue

我有一个MKMapView,另一个类有一个线程为MKMapView添加注释。

但问题是,MKMapView.annotations是非原子的。所以当另一个类正在添加注释时......如果用户不移动地图的可见区域,它看起来还可以。但是如果你继续移动它,而另一个类正在向地图添加注释,应用程序崩溃了。 因为在地图期间阵列是变异的动画。

我制作了NSOperationQueue,并将每个添加注释作业添加到队列中。

然后每当地图的区域发生变化时,暂停NSOperationQueue ..然后在完成区域更改后重新启动它。

我可以摆脱大多数崩溃......但偶尔也会发生这种情况。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

不要在后台线程中将注释添加到MKMapView。让后台操作将NSArray返回给主线程,然后同步将NSArray添加到MKMapView。我一直这样做而且有效。

答案 1 :(得分:0)

始终在主线程上处理UI控件。