我需要通过SimplePing库ping我的iOS应用中的主机名。调用pinger?.start()后不触发代理方法。
//code to actually ping
var pinger: SimplePing?
var canStartPinging = false
func ping() {
pinger = SimplePing(hostName: "www.apple.com")
pinger?.delegate = self
pinger?.start()
repeat {
print("Repeat loop \(String(describing:
pinger?.hostName))")
if (canStartPinging) {
pinger?.send(with: nil)
}
RunLoop.current.run(mode: RunLoop.Mode.default, before:
(NSDate.distantFuture ))
} while(pinger != nil)
}
//SimplePingDelegate Methods below
extension WelcomeViewController: SimplePingDelegate {
private func simplePing(pinger: SimplePing!, didFailToSendPacket
packet: NSData!, error: NSError!) {
print("didFailToSendPacket")
}
private func simplePing(pinger: SimplePing, didFailWithError error:
NSError) {
print("didFailWithError")
}
private func simplePing(pinger: SimplePing!,
didReceivePingResponsePacket packet: NSData!) {
print("didReceivePingResponsePacket")
}
private func simplePing(pinger: SimplePing!,
didReceiveUnexpectedPacket packet: NSData!) {
print("didReceiveUnexpectedPacket")
}
private func simplePing(pinger: SimplePing!, didSendPacket packet:
NSData!) {
print("didSendPacket")
}
private func simplePing(pinger: SimplePing!, didStartWithAddress
address: NSData!) {
print("didStartWithAddress : \(String(describing: address))")
canStartPinging = true
}
}
未从委托接收回调。循环运行,但没有任何反应。打印“重复循环Optional(“ www.apple.com”)”,从不打印didStartWithAddress或didFailWithError。
答案 0 :(得分:0)
结果证明委托方法的方法签名不正确。填充委托方法的最好方法是开始键入simplePing并允许Xcode建议方法完成选项!