【问题标题】:How can we pause adding annotations while MKMapView is animating or moving. [iPhone SDK 3]我们如何在 MKMapView 动画或移动时暂停添加注释。 [iPhone SDK 3]
【发布时间】:2009-12-28 10:46:21
【问题描述】:

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

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: iphone mapkit mkmapview annotations nsoperationqueue


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!我会那样做的。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多