Swift: SimplePing 计时器未启动
Swift: SimplePing timer not firing
我正在尝试使用此解决方案 为我的 SimplePing 实施创建超时,但它不起作用。 SimplePing 库中没有内置任何内容来完成此操作。
我已经尝试在 @objc func sendping()
和 public func simplePing(_ pinger: SimplePing, didSendPacket packet: Data, sequenceNumber: UInt16)
中输入计时器,因为我已经跟踪了它到这些点的进度,但它从未在任何这些函数中实际触发。
public func simplePing(_ pinger: SimplePing, didSendPacket packet: Data, sequenceNumber: UInt16) {
pingTimer = Timer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: false)
}
和
@objc func sendPing() {
self.pinger!.send(with: nil)
pingTimer = Timer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: false)
}
这是 timerFired()
@objc func timerFired () {
pingResponse = String(format: "Response = DID NOT RECIEVE LATENCY")
print(pingResponse)
}
根据您选择的 API,您有责任在运行循环上安排计时器(您没有)。
自排API是
pingTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: false)
或者使用更现代的闭包 API
pingTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { [weak self] timer in
self?.pingResponse = String(format: "Response = DID NOT RECIEVE LATENCY")
print(self?.pingResponse)
}
我正在尝试使用此解决方案
我已经尝试在 @objc func sendping()
和 public func simplePing(_ pinger: SimplePing, didSendPacket packet: Data, sequenceNumber: UInt16)
中输入计时器,因为我已经跟踪了它到这些点的进度,但它从未在任何这些函数中实际触发。
public func simplePing(_ pinger: SimplePing, didSendPacket packet: Data, sequenceNumber: UInt16) {
pingTimer = Timer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: false)
}
和
@objc func sendPing() {
self.pinger!.send(with: nil)
pingTimer = Timer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: false)
}
这是 timerFired()
@objc func timerFired () {
pingResponse = String(format: "Response = DID NOT RECIEVE LATENCY")
print(pingResponse)
}
根据您选择的 API,您有责任在运行循环上安排计时器(您没有)。
自排API是
pingTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: false)
或者使用更现代的闭包 API
pingTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { [weak self] timer in
self?.pingResponse = String(format: "Response = DID NOT RECIEVE LATENCY")
print(self?.pingResponse)
}