当UI滚动时,应用程序停止从套接字接收数据



我有一个iPad应用程序,使用UDP套接字接收数据。它有一个UIWebView来浏览网页。但是当在UIWebView中做滚动时,一切都冻结了,没有接收到数据。我一直在寻找,它与运行循环和线程有关。但是如果UIWebView不能在主线程之外的另一个线程中运行,我怎么能在做滚动时接收数据?保持接收数据是至关重要的。

该项目使用来自Cocoa AsyncSocket的AsyncUdpSocket类,它工作得很好。还有Matt Gallagher的单例类。一切都在主线程中运行,UDP接收和UI。

提前感谢!

当执行滚动时,运行循环进入不同的模式(UITrackingRunLoopMode)并停止响应主线程上的网络活动。这是出于性能考虑。

您应该能够在适当的运行循环模式(我相信是UITrackingRunLoopMode)上调度这些更新。不过,我不推荐这样做。

相反,尝试在另一个线程(或队列,yay GCD!)上设置UDP网络代码,并在主线程上调度回调以更新UI。这将保证网络线程在从套接字获取数据时具有正确的运行循环模式。

最新更新