以下代码位于cellForRowAtIndexPath
内。
1。)我需要以可能的方式修改此代码,取消下载或在viewDissapears时阻止。我想,我应首先在.h
文件中初始化一个块,然后在cellForRowAtIndexPath
中使用它,然后在viewDidDissapear
时将其设置为nil。 (我不确定这种方法是否正确)。有人可以帮我编辑这段代码吗?
注意:应该讨论的是,当用户在特定视图上时,以及下面的代码正在下载某些图像时,用户决定移动到另一个视图。然后我想取消viewDidDissapear
方法
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
NSData *image = // I will be downloading an URL here
//this will set the image when loading is finished
dispatch_async(dispatch_get_main_queue(), ^{
// I will be displaying the Downloaded image here
});
});
答案 0 :(得分:0)
您不应该等待视图消失,并取消表视图单元格的prepareForReuse
方法中的操作。否则,您可能会在下载完成之前看到一个单元格被回收(例如,因为用户执行了快速滚动),然后完成下载将在正确的内容覆盖之前显示错误的内容。除此之外,您的方法看起来还可行。
答案 1 :(得分:0)
答案 2 :(得分:0)
下载已经是异步的,因此使用GCD包装它只会使问题复杂化。这是一个可以下载的可下载项目,可以在后台下载图像,并在到达时将它们添加到表格视图中。您可以轻松添加在下载器对象发布时取消下载的代码: