【发布时间】:2010-07-13 03:47:23
【问题描述】:
当它们滚动到屏幕上时,我正在下载表格视图单元格中的图像。出于用户体验的原因,我开始下载- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 中的图像。我不会等到表格视图完成滚动。设置表格视图单元格后,我开始下载我还没有的图像。但是,在表格视图停止移动之前,它们似乎并没有完全下载。一旦它停止移动,图像几乎会立即下载。
有没有在主 UI 线程不阻塞的情况下使用 NSURLConnection?或者,有没有一种方法可以在滚动表格视图时快速下载这些图像。
** 编辑 **
为了证明 NSURLConnection 比较慢,我使用 NSThread 在不同的线程中分离一个新的选择器。然后我下载数据并回调到创建 UIImage 并将其显示在表视图中的主线程。这种方法工作得更快。
就个人而言,我认为 NSURLConnection 被扔进了 UITableView 滚动阻止它的事件循环中。
【问题讨论】:
-
用户滚动表格的速度比手机访问网络和下载图像的速度要快得多。对我来说听起来很正常...
-
我刚刚通过分离一个新的 NSThread 实现了相同的解决方案,它的下载速度要快得多。
-
下载肯定会使用事件循环。滚动以某种方式将其关闭,这听起来似乎是合理的。
标签: iphone objective-c ipad nsurlconnection