0

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

但问题是, MKMapView.annotations 是非原子的。因此,当其他类正在添加注释时......如果用户不移动地图的可见区域,它看起来没问题。但是,如果您继续移动它,并且此时其他类正在向地图添加注释,则应用程序崩溃。因为在地图制作动画期间数组发生了变异。

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

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

我可以摆脱大多数崩溃......但它仍然偶尔发生。

任何想法?

4

2 回答 2

3

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

于 2009-12-28T12:02:05.080 回答
0

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

于 2010-01-08T20:18:16.347 回答