我有一个MKMapView,另一个类有一个线程为MKMapView添加注释。
但问题是,MKMapView.annotations是非原子的。所以当另一个类正在添加注释时......如果用户不移动地图的可见区域,它看起来还可以。但是如果你继续移动它,而另一个类正在向地图添加注释,应用程序崩溃了。 因为在地图期间阵列是变异的动画。
我制作了NSOperationQueue,并将每个添加注释作业添加到队列中。
然后每当地图的区域发生变化时,暂停NSOperationQueue ..然后在完成区域更改后重新启动它。
我可以摆脱大多数崩溃......但偶尔也会发生这种情况。
有什么想法吗?
答案 0 :(得分:3)
不要在后台线程中将注释添加到MKMapView。让后台操作将NSArray返回给主线程,然后同步将NSArray添加到MKMapView。我一直这样做而且有效。
答案 1 :(得分:0)
始终在主线程上处理UI控件。