I have regular code for loading images in table view cells
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSImage *image = file.image;
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image = image;
});
});
The problem is when I scroll too fast I can see that last block fires several times on same imageView
. And that looks really weird. Is there any way to cancel all previously scheduled operations for one imageView
(lets say they all will have unique id) before scheduling new one?
I mean, I want to be sure that only last scheduled operation should be executed and all all previously scheduled should be dropped. Is that possible by means of Grand Central Dispatch
? Or I have to add my own atomic flags to imageView objects and check whether flags are set before calling imageView.image = image;
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…