これは、iOS の Google Maps SDK に関する質問の一部ですが、Objective-C のアトミック操作に関する質問がほとんどです。
私のアプリでは、ユーザーの現在の場所と選択した目的地の間の地図上に GMSPolyline を描画したいと考えています。myLocation
のプロパティを使用して、ユーザーの現在の場所を取得できますGMSMapView
。のドキュメントによるとmyLocation
:
現在地が有効になっている場合は、ユーザーの場所のドットが描画されている場所が表示されます。
無効になっている場合、または有効になっているが位置データが利用できない場合、これは nil になります。このプロパティは、KVO を使用して観察できます。
次の形式をとるポリラインを描画するコードがあります。
if (myMapView.myLocation) {
// draw polyline between myMapView.myLocation and the selected destination
}
私の懸念は、可能性がどれほど低くても、チェックif (myMapView.myLocation)
とポリラインの描画の// draw polyline between myMapView.myLocation and the selected destination
間で、場所が不適切な瞬間に失われた場合にmyMapView.myLocation
なる可能性があることです。nil
したがって、私の質問は、Objective-C で、myMapView.myLocation
nil ではないチェックと へのアクセスをロックする操作にポリラインを描画することの両方をラップする方法があるmyMapView.myLocation
ので、チェック後に変更することはできませんが、試行する前にポリラインを描画します。Objective-C がメカニズムを提供している場合、Google ライブラリがmyLocation
ロックされている間に更新を試みた場合、これはどのような影響がありますか? ポリラインの描画を終了してロックを解除するまで、更新はキューに入れられますか?
したがって、これは主に、Google マップ ライブラリのコンテキストにおける Objective-C のアトミック トランザクションに関する質問だと思います。