首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >locationManager didUpdateLocations在设备上触发两次,在模拟器上只触发一次。

locationManager didUpdateLocations在设备上触发两次,在模拟器上只触发一次。
EN

Stack Overflow用户
提问于 2015-11-03 05:33:33
回答 9查看 11.1K关注 0票数 13

相同的代码,我假设设备实际上出于某种原因两次更新位置,尽管我只调用了startUpdatingLocation()一次,并且在didUpdateLocations中运行了一些stopUpdatingLocations()

代码语言:javascript
复制
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    manager.stopUpdatingLocation()
    let loc: CLLocation = locations[locations.count - 1]
    let id = 0
    let type = 0
    let number = 0

    createNewDataPoint(id, loc: loc, type: type, number: number)
}

在本例中,createNewDataPoint被调用了两次,创建了两个新的数据点。它只在模拟器中发生一次,所以我假设它与实际设备和GPS有关,因为模拟器伪造了它的位置。

startUpdatingLocation()只出现在我的代码中一次,在一个按钮上。基本上,单击这个按钮,go manager.startUpdatingLocations(),didUpdateLocations在模拟器上点击一次,在设备上点击两次(相同的坐标),然后创建两个新的数据点。

唯一提到任何相关内容的其他代码是设置准确性、筛选器、授权请求和前面提到的startUpdatingLocation()。有什么我可以做的,以确保我没有创建两倍于必要的数据点?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-11-03 05:47:19

可以随时频繁地调用Location委托方法。

但是,您可以使用以下算法来保护自己:

  1. 创建一个全局bool,比如didFindLocation
  2. 调用didFindLocation时,将startUpdatingLocation设置为startUpdatingLocation
  3. 内部委托回调didUpdateLocations:,如果didFindLocationfalse,则将didFindLocation设置为true,然后调用stopUpdatingLocation

希望这能有所帮助。

票数 18
EN

Stack Overflow用户

发布于 2016-10-06 09:07:24

最好的办法如下:

代码语言:javascript
复制
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    manager.stopUpdatingLocation()
    manager.delegate = nil
}
票数 14
EN

Stack Overflow用户

发布于 2016-12-21 07:27:34

iOS 10.0+的最佳解决方案

代码语言:javascript
复制
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
    [locationManager stopUpdatingLocation]; // stop location manager
    locationManager.delegate = nil;
    //Your logics... 
    //This will be called only one time now.
}

但别忘了再次设置代表。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33492023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档