这部分是关于 iOS 中的 Google Maps SDK 的问题,尽管可能主要是关于 Objective-C 中的原子操作的问题。
在我的应用程序中,我希望在用户当前位置和选定目的地之间的地图上绘制 GMSPolyline。myLocation
我可以使用a 上的属性检索用户的当前位置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
myMapView.myLocation
所以我的问题是,在Objective-C中,有没有办法让我将不为零的检查包装起来,并将折线绘制到锁定访问的操作中myMapView.myLocation
,因此在检查之后但在尝试之前不能更改它绘制折线。如果 Objective-C 确实提供了一种机制,那么如果 Google 库在myLocation
锁定时尝试更新,这会产生什么影响?更新是否只是排队,直到我完成绘制折线并释放锁定?
所以我想这主要是关于Objective-C中原子事务的问题,在谷歌地图库的背景下。