我正在尝试为Swift 3创建一个CocoaPod。因为CocoaPods使用Nimble和Quick,并且这些库尚未更新,所以我分叉了存储库,并尝试对其进行转换。
在Nimble项目中,有一个签名为的函数:
setTimer(start: DispatchTime, interval: UInt64, leeway: UInt64)
编译器说
Cannot invoke 'setTimer' with an argument list of type '(start: DispatchTime, interval: UInt64, leeway: UInt64)'
private let pollLeeway: UInt64 = NSEC_PER_MSEC
let interval = UInt64(pollInterval * Double(NSEC_PER_SEC))
asyncSource.setTimer(start: DispatchTime.now(), interval: interval, leeway: pollLeeway)
自动完成功能将显示所有setTimer方法均已弃用,但从我found的角度来看,不应该这样做。
有替代品吗?
最佳答案
在Swift 3.0中,您应该使用
let timer = DispatchSource.makeTimerSource(flags: DispatchSource.TimerFlags(rawValue: UInt(0)), queue: DispatchQueue.global(qos: DispatchQoS.QoSClass.default))
timer.scheduleRepeating(deadline: DispatchTime.init(uptimeNanoseconds: UInt64(100000)), interval: DispatchTimeInterval.seconds(1), leeway: DispatchTimeInterval.seconds(0))
代替,这对我有用
关于swift3 - Swift 3中不赞成使用setTimer吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38148063/