我目前在 Mac OS X 应用程序中使用 Apple 的 SimplePing 在传输数据之前对 URL 执行 ping 操作,效果很好,但会锁定我的 UI。我可能没有找对地方,但我该如何防止这种情况发生?我目前正在使用 currentRunLoop,我认为这是问题所在,但我仍然希望用户能够在此操作期间与 UI 进行交互(例如取消)。如何为 Simple Ping 创建一个运行循环,以便我的 UI 不会锁定?
SimplePing *localPing = [SimplePing simplePingWithHostName:pingHost];
[localPing setDelegate:self];
[localPing start];
do {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
} while (localPing != nil);