我在UITableView
单元格内显示的背景中下载图像。
图像不会显示。
我想以更快的方式显示下载的图像。例如,我想在UITableView开始减速时这样做。
为此,我需要知道下载何时完成,在调用connectionDidFinishLoading之前我无法知道。在UITableView移动时不调用此方法。 (或者可能在界面繁忙时)
是否有可能以某种方式让它在UI忙碌时调用connectionDidFinishLoading,没有同步使用NSURLConnection?
答案 0 :(得分:1)
这是你做的:
images
对象上的article
集合。此时,表格视图应在滚动时成功显示任何旧/当前项目。现在,......
image
插入名为articles
的{{1}}上的集合中 - 结果控制器将根据您设置的初始谓词“看到”该内容。如果新对象的indexPath(article,image,等等)当前在tableView中可见,则tableView和结果控制器将为您散列它。此时您应该完成,新图像可能会显示出来。结果控制器是KVO为您观察的。你做需要采取行动,结果控制器得到改变,但有很多例子,如this(并且方法之间有很多差异)。如果没有,你可能需要做一些无害的事情 - 例如当新文章出现时滚动到顶部;除非你绝对必须,否则不要打电话给images
。
<强>更新强>
如果您只是尝试强制NSURLConnection同步或异步操作,那么您所要做的就是使用reloadData
(或相关的初始化程序)和+ (NSURLConnection *)connectionWithRequest:(NSURLRequest *)request delegate:(id < NSURLConnectionDelegate >)delegate
而不是{{1}来设置NSURLConnection }}。第一种方法是异步加载数据,而后者是同步的。
但是,既然你提到- (void)start
,你似乎是异步设置连接,不是吗?
答案 1 :(得分:0)
在后台运行同步NSURLConnection的一种简单方法是使用GCD。
dispatch_async(dispatch_get_global_queue(0,0),^ {
// Do your synchronous NSURLConnection and handle the response
dispatch_async(dispatch_get_main_queue(), ^{
// update UI
});
});
您还可以使用SDWebImage来很好地处理图像加载。 https://github.com/rs/SDWebImage