【发布时间】:2015-06-16 22:38:40
【问题描述】:
我正在尝试使用 Apple 的类:Simple Ping,但我无法使用它。
当我运行示例 mac os x 项目时,它正在工作:
2015-06-17 00:03:22.569 SimplePing[20386:3133535] ping 192.168.1.102
2015-06-17 00:03:22.569 SimplePing[20386:3133535] #0 发送
2015-06-17 00:03:22.570 SimplePing[20386:3133535] #0 收到
2015-06-17 00:03:23.570 SimplePing[20386:3133535] #1 发送
2015-06-17 00:03:23.571 SimplePing[20386:3133535] #1 收到
等等。
但是当我从我的 ios (swift) 应用程序中执行此操作时:
let pinger = SimplePing(hostName: "192.168.1.102")
pinger.delegate = self;
pinger.start()
do {
NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate.distantFuture() as! NSDate)
} while(pinger != nil)
不确定是否需要 do..while 循环 - 可能不需要。无论如何,我也尝试过不使用它。
我已将 SimplePingDelegate 添加到我的班级:
func simplePing(pinger: SimplePing!, didFailToSendPacket packet: NSData!, error: NSError!) {
println("didFailToSendPacket")
}
func simplePing(pinger: SimplePing!, didFailWithError error: NSError!) {
println("didFailWithError")
}
func simplePing(pinger: SimplePing!, didReceivePingResponsePacket packet: NSData!) {
println("didReceivePingResponsePacket")
}
func simplePing(pinger: SimplePing!, didReceiveUnexpectedPacket packet: NSData!) {
println("didReceiveUnexpectedPacket")
}
func simplePing(pinger: SimplePing!, didSendPacket packet: NSData!) {
println("didSendPacket")
}
func simplePing(pinger: SimplePing!, didStartWithAddress address: NSData!) {
println("didStartWithAddress")
}
所以它给了我输出:
2015-06-17 00:32:12.368 可用[938:150352] CFHostStartInfoResolution
2015-06-17 00:32:12.374 可用[938:150352] >HostResolveCallback
didStartWithAddress
不调用其他函数。为什么?
顺便说一句。我也尝试过将 pinger 移动到类变量中,如下所示:
var pinger: SimplePing?
完全没有区别。
我该如何解决这个问题?
【问题讨论】: