Это как-то связано с DispatchSourceTimer
, но я никуда не могу.Как использовать Swift 3 scheduleRepeating?
Это дает мне ошибку о «неоднозначной ссылки»:
DispatchSourceTimer.scheduleRepeating(deadline:.now(), interval:.milliseconds(delay), leeway:.milliseconds(1))
Мое решение
Проблема заключалась в том, чтобы сделать с типом путаницы. Спасибо матовый за то, что указал мне в правильном направлении. Вот мой полный результат.
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()
}
}
для стартера, я действительно звонил статическую функцию, когда я нуждался в конкретизированных 'DispatchSource.timer (...)'. во-вторых, моя 'delay' была Int64, которая вызывала проблемы типа. –
Похоже, это изменилось в Beta 4 –
Hm. Вам нужно изучить это. –