0
我目前在Mac OS X應用程序中使用蘋果公司的SimplePing在傳輸數據之前ping一個URL,這工作正常,但鎖定我的用戶界面。我可能沒有在正確的地方尋找,但我怎樣才能避免這種情況發生?我目前正在使用currentRunLoop,我認爲這是問題所在,但我仍然希望用戶能夠在此操作期間與UI進行交互(例如取消)。如何爲Simple Ping創建運行循環,以便我的UI不鎖定?NSThread與代表SimplePing
SimplePing *localPing = [SimplePing simplePingWithHostName:pingHost];
[localPing setDelegate:self];
[localPing start];
do {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
} while (localPing != nil);
這似乎解決了用戶界面死機的問題,但我從未似乎得到委託的回調,所以我的應用程序從未完成。任何想法爲什麼這可能是/如何解決它?我在你的答案中改變的唯一的東西是添加一個autoreleasepool,並在'ping:'中將'ip'改爲'pingHost',並在'detachNewThreadSelector: – Katie 2012-08-08 15:33:25