gpt4 book ai didi

swift - iOS 9 中的 requestLocation() 多次调用 didUpdateLocation 委托(delegate)

转载 作者:搜寻专家 更新时间:2023-10-30 23:09:45 24 4
gpt4 key购买 nike

所以在 iOS9 上有了新的 requestLocation() 方法。我试图用它来只获取一个位置更新,但它多次点击 didUpdateLocations

这不是应该只调用一次吗?我已将 distanceFilter 设置为 1000.0,因此范围很广,有助于快速返回。有任何想法吗 ?

即使我在委托(delegate)方法中调用 stopUpdatingLocation(),我仍然会得到三次委托(delegate)。

注意:当我改用 StartUpdatingLocation 时会发生相同的行为,我只想返回一次,因为我想获得用户的当前国家/地区,因此将位置提供给 reversegeocoder

提前致谢

代码如下:

func getLocationOneTime(accuracy: Double){
print("Acquiring location one time - accuracy requested:\(accuracy)")
locationManager.distanceFilter = accuracy
locationManager.desiredAccuracy = accuracy
// Start gpsOneTimeTimeout timer
gpsTimeoutTimer = NSTimer.scheduledTimerWithTimeInterval(gpsOneTimeTimeout, target: self, selector: #selector(self.reportTimeout), userInfo: nil, repeats: false)
locationManager.requestLocation()
}

最佳答案

通常对于这种问题我只是使用一个 if 语句来防止委托(delegate)函数在第一次调用后改变任何东西

在这种情况下,如果您只是在寻找位置,我会这样做:

let locationManager = CLLocationManager()
var userLocation: CLLocation!

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if userLocation == nil {
if let location = locations.first {
userLocation = location
self.locationManager.stopUpdatingLocation()
}
}
}

编辑:我查看了苹果的文档,你做的是对的,我怀疑你是否能够通过任何合理的方式阻止它。

关于swift - iOS 9 中的 requestLocation() 多次调用 didUpdateLocation 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36542147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com