简介
目前我有一个UITableView,其中填充了自定义单元格,显示当前正在上传到服务器的文件的上传进度。上传过程只是使用NSURLConnection的标准异步方法在后台异步运行的NSURLConnection对象。
问题是在滚动期间,UITableView,或者我想UITableview的UIScrollView,有点阻止整个主线程,这样做的重要信息,例如我的文件的上传过程等都不会更新,直到UIScrollView处于停滞状态。
研究
现在我确实碰到了我想在这篇文章中与我的完全相同的问题:类似的问题
所以似乎整个主线程都被阻止了。我也成功地添加了一个像上面的帖子一样的计时器,即使在滚动期间也会被调用。但是......不幸的是,它并没有真正解决我的情况。
问题仍然是NSURLConnection对象被阻止,这意味着NSURLConnection deletage方法:didSendBodyData
仍然没有被调用,这是我将新的字节数写入服务器等等,所以我根本无法接收数据。
有没有解决这个问题的方法?我是否必须创建某种自定义UIScrollView或类似的东西来解决限制,比如创建自己的滚动机制?
答案 0 :(得分:3)
您是否考虑过移动NSURLConnection
代码以在后台线程上运行?这应该允许它在用户滚动时运行。
您的UITableView
是UIScrollView
(您提到过),这意味着您可以针对它注册UIScrollViewDelegate
。如果您实施scrollViewDidScroll:
,您可以有效地进行主线索调查,看看您是否还有来自NSURLConnection
的结果。