UITablewView在滚动期间停止渲染

简短的介绍

目前我有一个UITableView充满了自定义单元格,显示正在上传到服务器的文件的上传进度。 上传过程只是使用NSURLConnection的标准asynchronous方法在后台asynchronous运行的NSURLConnection对象。

问题是,在滚动期间,UITableView,或者我想UITableView的UIScrollView,阻止整个主线程,这是否重要的​​信息,如我的file upload过程等都不更新,直到UIScrollView在停滞不前。

研究

现在我碰到了,我觉得在这篇文章中和我的完全一样的问题是:类似的问题

所以似乎整个主线程被阻塞。 我也成功地添加了一个像上面的post,即使在滚动期间也被称为计时器。 但是,不幸的是,这并不能真正解决我的情况。

问题仍然是NSURLConnection对象被阻塞,这意味着NSURLConnection的deletage方法:didSendBodyData

仍然没有被调用,这是我得到新的字节写入到服务器等等,所以我根本无法接收数据。

有没有办法解决这个问题? 我是否需要创build一些自定义的UIScrollView或类似的东西来解决这个限制,比如创build我自己的滚动机制?

你有没有考虑移动NSURLConnection代码在后台线程上运行? 这应该允许它甚至在用户滚动时运行。

你的UITableView是一个UIScrollView (你提到过),这意味着你可以注册一个UIScrollViewDelegate 。 如果你实现了scrollViewDidScroll:你可以有效地让你的主线程轮询,看看你是否有NSURLConnection的结果呢。