是否可以在didUpdateLocations
内调用Timer
?我的意思是..
_timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(_:didUpdateLocations:)), userInfo: nil, repeats: true)
这会起作用吗?如果是,那么它将每10秒更新一次位置?
答案 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)