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 に答える