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

我有一个使用UDP套接字接收数据的iPad应用程序。 它有一个UIWebView浏览网页。 但是在UIWebView中滚动的时候,一切冻结,没有数据被接收。 我一直在寻找和它有关的runloops和线程。 但是,如果UIWebView不能运行在另一个线程以外的其他线程,如何在滚动时接收数据? 继续接收数据至关重要。

该项目使用Cocoa AsyncSocket的AsyncUdpSocket类,效果很好。 还有Matt Gallagher的单身课。 一切运行在主线程,UDP接收和UI。

提前致谢!

滚动时,runloop进入不同的模式( UITrackingRunLoopMode ),并停止响应主线程上的networking活动。 这是出于性能的原因。

你应该能够在适当的runloop模式(我相信UITrackingRunLoopMode )上安排这些更新。 虽然,我不会推荐这个。

相反,尝试在另一个线程(或队列,GCD!)上设置你的UDPnetworking代码,并在主线程上安排callback来更新UI。 这将保证networking线程在将数据返回到套接字上时具有适当的runloop模式。