它与某些事情有关DispatchSourceTimer
,但我无法到达任何地方.
这给了我一个关于"模棱两可的参考"的错误:
DispatchSourceTimer.scheduleRepeating(deadline:.now(), interval:.milliseconds(delay), leeway:.milliseconds(1))
Run Code Online (Sandbox Code Playgroud)
问题与类型混淆有关.非常感谢matt指向正确的方向.这是我的完整结果.
private var queueNo = 0
@discardableResult func repeater(_ delay:Int, _ closure:(()->())) -> (()->()) {
let queue = DispatchQueue(label: "repeater\(queueNo)", attributes: [])
queueNo += 1
let timer = DispatchSource.makeTimerSource(flags: [], queue: queue)
timer.scheduleRepeating(deadline: .now() + .milliseconds(delay), interval: .milliseconds(delay), leeway: .milliseconds(1))
timer.setEventHandler {
DispatchQueue.main.async(execute: closure)
}
timer.resume()
return {
timer.cancel()
}
}
Run Code Online (Sandbox Code Playgroud)
尝试这个
override func viewDidLoad() {
super.viewDidLoad()
//Swift 3
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.update), userInfo: nil, repeats: true);
}
func update() {
// Do Something
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2718 次 |
最近记录: |