定位管理器上的定时器

时间:2017-02-01 13:40:39

标签: swift timer cllocationmanager

是否可以在didUpdateLocations内调用Timer?我的意思是..

_timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(_:didUpdateLocations:)), userInfo: nil, repeats: true) 

这会起作用吗?如果是,那么它将每10秒更新一次位置?

2 个答案:

答案 0 :(得分:1)

您无法调用didUpdateLocations。如果您需要频繁更新,最好的选择是标准位置服务:

  

标准位置服务最适合那些应用   直接向用户提供与位置相关的信息,但也可以   也被其他类型的应用程序使用。要启动该服务,请进行配置   location的desiredAccuracy和distanceFilter属性   管理器然后调用requestLocation(),startUpdatingLocation(),   或者allowDeferredLocationUpdates(untilTraveled:timeout :)方法。决不   指定大于您所需的准确度值。核心位置   使用您指定的准确度值来更好地管理电源。更高   准确度需要更精确的硬件,如GPS   消耗更多的电力。

https://developer.apple.com/reference/corelocation/cllocationmanager

答案 1 :(得分:1)

您的回调选择器必须具有不同的签名:

class MyClass {

    func startTimer() {
        _timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(MyClass.timerCallBack(_:)), userInfo: nil, repeats: true)
    }

    // ...

    func timerCallBack(timer: Timer) {
        // Here you go.
    }
}

(可能包含一些语法错误;目前手头没有Xcode)