我正在尝试为Swift 3创建一个CocoaPod。因为CocoaPods使用NimbleQuick,并且这些库尚未更新,所以我分叉了存储库,并尝试对其进行转换。

在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/

10-13 08:27