Ha qualcosa a che fare con DispatchSourceTimer
, ma non riesco ad andare da nessuna parte.Come si usa Swift 3 scheduleRepeating?
Questo mi dà un errore di "riferimento ambiguo":
DispatchSourceTimer.scheduleRepeating(deadline:.now(), interval:.milliseconds(delay), leeway:.milliseconds(1))
La mia soluzione
Il problema era di fare con il tipo di confusione. Grazie Matt per avermi indicato nella giusta direzione. Ecco il mio risultato completo.
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()
}
}
per antipasto, ho davvero stava chiamando la funzione statica quando ho bisogno di un istanziato 'DispatchSource.timer (...)'. in secondo luogo il mio "ritardo" era un Int64 che causava problemi di tipo. –
Sembra che questo sia cambiato in Beta 4 –
Hm. Ho bisogno di esaminarlo. –