我有一个使用 UDP 套接字接收数据的 iPad 应用程序。并且它有一个UIWebView来浏览网页。
但是在 UIWebView 中进行滚动时,一切都会冻结并且没有收到任何数据。
我一直在搜索,它与运行循环和线程有关。但是,如果 UIWebView 无法在主线程以外的另一个线程中运行,我如何在滚动时接收数据?持续接收数据至关重要。
该项目使用 AsyncUdpSocket 类可可异步套接字 http://code.google.com/p/cocoaasyncsocket/效果很好。还有来自的单例类马特·加拉格尔 http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html。一切都在主线程中运行,UDP接收和UI。
提前致谢!
当您进行滚动时,运行循环进入不同的模式(UITrackingRunLoopMode
)并停止响应主线程上的网络活动。这样做是出于性能原因。
您应该能够在正确的运行循环模式上安排这些更新(UITrackingRunLoopMode
我相信)。不过,我不会推荐这个。
相反,尝试在另一个线程(或队列,耶 GCD!)上设置 UDP 网络代码,并在主线程上安排回调以更新 UI。这将保证网络线程在从套接字上取回数据时具有正确的运行循环模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)